码迷,mamicode.com
首页 > 其他好文 > 详细

Django之用户注册

时间:2018-11-24 18:03:20      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:_for   大于   mod   message   else   tor   name   ons   唯一性   

用户注册需要提交的信息包括:

  用户名

  邮箱

  密码

  确认密码

  验证码

这里选择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])(?=.*[!@#$\%\^\&\*\(\)])[0-9a-zA-Z!@#$\%\^\&\*\(\)]{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])(?=.*[!@#$\%\^\&\*\(\)])[0-9a-zA-Z!@#$\%\^\&\*\(\)]{8,32}$

^ 匹配一行的开头位置
(?=.*[0-9]+$) 任意字符串后有一数字
(?=.*[a-zA-Z]+$) 任意字符串后有一字母

(?=.*[!@#$\%\^\&\*\(\)])任意字符串后有一特殊符号
[0-9a-zA-Z!@#$\%\^\&\*\(\)] {8,32} 由8-32位数字、字母和特殊字符组成
$ 匹配行结尾位置

 

Django之用户注册

标签:_for   大于   mod   message   else   tor   name   ons   唯一性   

原文地址:https://www.cnblogs.com/roygood/p/10012773.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!