Django之用户注册
Posted roygood
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django之用户注册相关的知识,希望对你有一定的参考价值。
用户注册需要提交的信息包括:
用户名
邮箱
密码
确认密码
验证码
这里选择form表单提交信息,注册页面的响应函数就要分条件执行,get请求时要展示注册页面,post请求时要接收用户提交的信息,对信息格式、正确性、唯一性进行验证,如果有错误则返回错误信息,如果验证通过则将信息添加到数据库返回注册成功信息
在urls中添加路由
略
编写注册响应函数
这个响应函数主体为form验证,之后分成功或失败两种情况进行处理,由于在登录时也会有form表单验证,所以我们可以将form验证单独写到一个文件中,在注册或登录函数中再去引入
form验证代码
from django.core.exceptions import ValidationError from django import forms as django_forms from django.forms import fields as django_fields from django.forms import widgets as django_widgets from repository import models class RegisterForm(BaseForm, django_forms.Form): username = django_fields.CharField( min_length=6, max_length=20, error_messages={‘required‘: ‘用户名不能为空.‘, ‘min_length‘: "用户名长度不能小于6个字符", ‘max_length‘: "用户名长度不能大于32个字符"} ) password = django_fields.RegexField( ‘^(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[[email protected]#$\%^&*()])[[email protected]#$\%^&*()]{8,32}$‘, min_length=12, max_length=32, error_messages={‘required‘: ‘密码不能为空.‘, ‘invalid‘: ‘密码必须包含数字,字母、特殊字符‘, ‘min_length‘: "密码长度不能小于8个字符", ‘max_length‘: "密码长度不能大于32个字符"} ) confirm_pwd = django_fields.CharField() def clean(self): v1 = self.cleaned_data[‘password‘] v2 = self.cleaned_data[‘confirm_pwd‘] if v1 == v2: pass else: from django.core.exceptions import ValidationError,NON_FIELD_ERRORS raise ValidationError(‘密码输入不一致‘)
Django没有密码字段,我们通过django_fields.RegexField自定义正则验证密码格式
要求:由数字和字母组成,并且要同时含有数字、字母和特殊字符,且长度要在8-32位之间
^(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[[email protected]#$\%^&*()])[[email protected]#$\%^&*()]{8,32}$
^ 匹配一行的开头位置
(?=.*[0-9]+$) 任意字符串后有一数字
(?=.*[a-zA-Z]+$) 任意字符串后有一字母
(?=.*[[email protected]#$\%^&*()])任意字符串后有一特殊符号
[[email protected]#$\%^&*()] {8,32} 由8-32位数字、字母和特殊字符组成
$ 匹配行结尾位置
以上是关于Django之用户注册的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Django Summernote 中显示编程片段的代码块?
django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE的解决办法(转)(代码片段
django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE的解决办法(转)(代码片段