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

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




	
	用户中心


	欢迎您,{{username}}
	退出


login.html




	
	登陆


	

请登陆

{% csrf_token %} 用户:
密码:

register.html




	
	注册


	
{% csrf_token %} 用户:
密码:

regok.html




	
	注册成功


	

注册成功!

点击这里跳转至登陆界面

logout.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自带模块构建用户注册登录系统。



你可能感兴趣的:(Django)