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(密码输入不一致)
View Code

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的解决办法(转)(代码片段

[TimLinux] Django 信号

web框架之Django

48个值得掌握的JavaScript代码片段(上)