Django的注册、登陆、注销可以有三种方式。
1.自己新建模型,直接构造user模型,灵活性更强,但是需要编写代码的工作量大。
2.利用django.contrib.auth.model的User模型进行扩展,表单对应于模型,处理提交数据。
3.利用第三方注册应用。
这里主要采用第三种方法。
1.下载django-registration-redux。

Paste_Image.png
2.yzdelt的setting.py里的installed_apps添加registration,并设置相应参数。

Paste_Image.png

Paste_Image.png
3.在同级目录的urls.py中导入registration、模块,添加路由规则。

Paste_Image.png
4.进行数据库的makemigrations和migrate。

Paste_Image.png
5.编写登陆页面的模版。

Paste_Image.png
6.进行登陆,会出现编码问题。确保各处编码为utf-8。
数据库初始化设置为utf-8

Paste_Image.png

Paste_Image.png
setting.py中设置编码参数

Paste_Image.png

Paste_Image.png
各个.py文件最好加上#coding=utf8

Paste_Image.png
最后设置数据库表格编码为utf8
7.注册页面的模板

Paste_Image.png
8.在基础模板中添加,jquery-validate用于验证。

Paste_Image.png
在js/validate和js/validate2中编写验证代码,注册模块所需的js/validate2编写如下,登陆的js/validate2类似

Paste_Image.png
尤其需要注意,注册验证的字段要与user模型中的字段名一致,登陆不需要更改。
9注销和登陆成功页面。
{% extends "base.html" %}
{% block main %}
<h1>注销</h1>
<p>欢迎下次访问!</p>
{% endblock %}
{% extends "base.html" %}
{% block main %}
<br/>
<br/>
<h1>注册完成</h1>
<p>You are now
registered</p>
{% endblock %}
10.在基础模板设置,各个模板的入口。
<ul class="nav navbar-nav ul-right">
<li><a href="{% url 'registration_register' %}">注册</a></li>
{% if user.is_authenticated %}
<li><a href="{% url 'auth_logout' %}?next=/yz_delt/">注销</a> <p style="color:white;display:inline;">{{
user.username }},欢迎访问</p></li>
<li><a href="{% url 'upload' %}">数据上传</a></li>
{% else %}
<li><a href="{% url 'auth_login' %}">登录</a> <p style="color:white;display:inline;">欢迎访问</p></li>
{% endif%}
11.为了使注册成功后,回到主页,重写方法。

Paste_Image.png