【django4】简单注册/登陆/注销功能

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/tiandawangliang/article/details/60478512

Python版本3.5,django版本1.10
1 新建项目
    django-admin.py startproject website1
2 启动服务器,查看是否正常
    manage.py runserver
3 进入工程website1一级文件夹下新建app
    python manage.py startapp account
4 将新建立的app加入工程中
    修改 website1/website1/settings.py的INSTALL_APPS,将app名称加入该元组中。
5 修改website1/urls.py文件

from django.conf.urls import url, include
from account import views as account_views
urlpatterns = [
    url(r'^index/', account_views.index),       # 用户主界面
    url(r'^register/', account_views.register), # 注册界面
    url(r'^login/', account_views.login),       # 登陆界面
    url(r'^logout/', account_views.logout),     # 注销界面
]

6  修改views.py

from django.shortcuts import render
from .models import UserModel
from django.http import HttpResponseRedirect

# Create your views here.
def index(request):
	s = request.session.get('username', default=None)
	if s:
		return render(request, 'account/index.html', {'username':s}) # 跳转至用户主界面
	else:
		return HttpResponseRedirect('/login')

def register(request):
	if request.method == 'POST': # 用户输入账户密码后提交表单
		username = request.POST['username']
		password = request.POST['password']
		UserModel.objects.create(username=username, password=password) # 写入数据库
		return render(request, 'account/regok.html')
	else: # 用户直接访问注册页面
		return render(request, 'account/register.html')

def login(request):
	if request.method == 'POST': # 用户输入账户密码后提交表单
		username = request.POST['username']
		password = request.POST['password']
		hasUser = UserModel.objects.filter(username=username, password=password)
		if hasUser: # 该用户存在
			request.session['username'] = username # 保存用户名在session中
			return render(request, 'account/index.html', {'username':username}) # 跳转至用户主界面
		else:
			return render(request, 'account/login.html')
	else: # 用户直接访问登陆页面
		return render(request, 'account/login.html')

def logout(request):
	try:
		del request.session['username'] # 将用户名从session中删除
	except KeyError:
		pass
	return render(request, 'account/logout.html')

7 编写HTML

index.html

<!DOCTYPE html>
<html>
<head lang="en">
	<meta charset="UTF-8">
	<title>用户中心</title>
</head>
<body>
	欢迎您,{{username}}
	<a href="/logout">退出</a>
</body>
</html>

login.html

<!DOCTYPE html>
<html>
<head lang="en">
	<meta charset="UTF-8">
	<title>登陆</title>
</head>
<body>
	<h2>请登陆</h2>
	<form method="post">
		{% csrf_token %}
		用户:<input name="username" type="text" ><br/>
		密码:<input name="password" type="password" ><br/>
		<input type="submit" value="登陆" >
	</form>
</body>
</html>

register.html

<!DOCTYPE html>
<html>
<head lang="en">
	<meta charset="UTF-8">
	<title>注册</title>
</head>
<body>
	<form method="post">
		{% csrf_token %}
		用户:<input name="username" type="text" ><br/>
		密码:<input name="password" type="password" ><br/>
		<input type="submit" value="注册" >
	</form>
</body>
</html>

regok.html

<!DOCTYPE html>
<html>
<head lang="en">
	<meta charset="UTF-8">
	<title>注册成功</title>
</head>
<body>
	<h2>注册成功!</h2>
	点击<a href="/login">这里</a>跳转至登陆界面
</body>
</html>

logout.html

<!DOCTYPE html>
<html>
<head lang="en">
	<meta charset="UTF-8">
	<title>注销</title>
</head>
<body>
	已注销!
</body>
</html>

8 models.py中的模型

from django.db import models
# Create your models here.
class UserModel(models.Model):
	username = models.CharField(max_length=30)
	password = models.CharField(max_length=30)

	def __str__(self):
		return self.username+", "+self.password

系统并没有对注册和登陆的输入进行检测,也没有对重复注册进行检测,用session变量判断用户是否登陆。

其实,django中自带了很多模块可以快速建立用户注册登录系统,相关模块如下;

Froms模块,代替表单中的输入部分,对输入进行检查

User模块:代替上文中自己编写的UserModel模型,具有更多字段

auth模块:对用户输入进行验证

login模块:代替上文中session变量部分,django自动判断用户是否登陆或注销

下一篇文章将介绍如何应用Django自带模块构建用户注册登录系统。



猜你喜欢

转载自blog.csdn.net/tiandawangliang/article/details/60478512