django登录注册验证之密码包含特殊字符,确认密码一致实现

Form验证的原理

首先用户在注册界面提交表单,后台收到表单之后通过request.post取到数据然后传入已经写好的Form类

执行obj.is_valid()这里的obj为Form的实例,在Form类里面对字段一个一个进行验证先执行正则匹配然后执行clean方法

这里的clean方法就是一个钩子,但是不能在验证某个字段的时候调用其他字段,原因是这个时候其他字段不能确定是否验证完成了

需要在所有字段验证之后再执行这个钩子(clean方法)具体实现方法如下:

________________________________________________views.py______________________________________________________
        if request.method == "POST":
        check_obj = account.Register(request.POST)
        if check_obj.is_valid():
            username = check_obj.cleaned_data.get(‘username‘)   #验证之后的值存放在check_obj.cleaned_data里面
            password = check_obj.cleaned_data.get(‘password‘)
            email = check_obj.cleaned_data.get(‘email‘)
—————————————————————————————————————————————————Register—————————————————————————————————————————————————————————
from django.forms import fields as ac_fields
from django import forms as ac_forms
from django.core.exceptions import ValidationError   

class Register(ac_forms.Form):
    username = ac_fields.CharField(error_messages={‘required‘: ‘用户名不能为空‘})
    #password = ac_fields.CharField(error_messages={‘required‘: ‘密码不能为空‘})
    password = ac_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个字符"}
    )
    repassword = ac_fields.CharField(error_messages={‘required‘: ‘确认密码不能为空‘})
    email = ac_fields.CharField(error_messages={‘required‘: ‘邮箱不能为空‘, ‘invalid‘:‘邮箱格式错误‘})
    check_code = ac_fields.CharField(error_messages={‘required‘: ‘验证码不能为空‘,
                                                     ‘invalid‘: ‘邮箱格式错误‘})
    def clean(self):
        pwd1 = self.cleaned_data.get(‘password‘)
        pwd2 = self.cleaned_data.get(‘repassword‘)
        if pwd1==pwd2:
            pass
        else:
            from django.core.exceptions import ValidationError   #这里异常模块导入要放在函数里面,放到文件开头有时会报错,找不到
            raise ValidationError(‘密码输入不一致‘)

然后验证之后如果两次密码不相同,那么触发的ValidationError会放到公共错误里面:

    check_obj.errors[‘__all__‘] 或者
    check_obj.errors[NON_FIELD_ERRORS]

但是在前端不识别check_obj.errors.__all__,所以前端需要使用:check_obj.non_field_errors(其他正常字段的取法:check_obj.errors.username.0)

原文地址:https://www.cnblogs.com/qiangayz/p/9175808.html

时间: 2024-10-20 21:06:52

django登录注册验证之密码包含特殊字符,确认密码一致实现的相关文章

oracle之用户名密码包含特殊字符时候怎么使用sqlplus登录

oracle有时候用户密码包含一些特殊字符直接登录会报错,需要使用以下方式登录sqlplus sqlplus 'username/"password"' PS:整体使用单引号括起来,包含特殊密码的字符串使用双引号括起来即可,外部必须是单引号内部必须是双引号错一个都不行

Flask博客类登录注册验证模块代码(十四)

1 文件系统 blog #博客类 App forms #表单 __init__.py user.py models #模型 __init__.py user.py static #静态文件 templates #模板 common #基类模板 base.html email #邮件 email.html errors #错误 error.html main #主页 index.html user #用户登录注册 login.html register.html views #视图蓝本 __ini

springboot结合全局异常处理之登录注册验证

在学校做一个校企合作项目,注册登录这一块需要对注册登录进行输入合法的服务器端验证,因为是前后端分离开发,所以要求返回JSON数据. 方法有很多,这觉得用全局异常处理比较容易上手 全局异常处理 首先来创建一个sprIngboot的web项目或模块,目录结构如下 实体类User.java @Data public class User { private String userName; private String passwold; } 实体类UserResult.java 把数据封装到这里返回

用户登录注册验证(js)

//判断输入的字符串是否大于指定长度function checkstr(str,digit){ var n=0; for(i=0;i<str.length;i++){ var leg=str.charCodeAt(i); //获取字符串中指定字符的Unicode编码 if(leg>255){ n+=2; }else { n+=1; } } if (n>digit){ return true; }else { return false; } }//判断用户名function checkeU

设置登录注册页面输入密码时,监听密码显示隐藏;

代码里面:在oncreate()方法里面调用:还需要先定义一个全局变量:private boolean isHidden = true; private void setchck_password() { // 设置第一次输入密码未不可见状态 login_password.setTransformationMethod(PasswordTransformationMethod .getInstance()); // 设置CheckBox监听 check_password .setOnChecke

[oldboy-django][2深入django]登录注册页面验证码

后台生成随机验证码 #验证码生成 - 在login.html 中有一张验证码图片 设置图片的src url, 相当于发送一次get请求,返回的内容为图片渲染的内容 <div class="col-sm-5"> <input type="password" class="form-control" id="inputPassword3" placeholder="验证码"> </

登录注册——注册输入验证

上次讲了登录注册问题的数据库表怎么建,以及具体有哪些内容.今天主要讲一下注册的表单验证.我们经常上网各种登录注册的时候应该已经注意过就是有时候密码有要求,比如输入6-20位密码.还有确认密码,必须和密码输入一致的时候才行.邮箱也是,邮箱的格式不能出错.当以上格式有误的时候就不能提交表单,还有如果还有必填项目没有填的话也不可以提交表单. 一看见判断输入框的格式还有位数限制时我们首先就应该想到正则表达式. 下面我们来边看代码表讲解. 这个就是html的页面代码,我们用的是AngularJS来写的.布

struts2+json+jquery局部刷新实现注册验证

struts2+json+jquery局部刷新实现注册验证 1.项目需要导入的jar包 在web项目的WebRoot/WEB-INF/lib目录下导入以下包 2.在src目录下建立包com.entity,里面建立java类:UserInfo.java .  MailSenderInfo.java UserInfo.java package com.entity; import java.io.Serializable; /** * 说明:用户实体类 * @author wangcunhuazi

Django实现注册

前言 对于web开来说,用户登陆.注册.文件上传等是最基础的功能,针对不同的web框架,相关的文章非常多,但搜索之后发现大多都不具有完整性,对于想学习web开发的新手来说不具有很强的操作性:对于web应用来说,包括数据库的创建,前端页面的开发,以及中间逻辑层的处理三部分. 本系列以可操作性为主,介绍如何通过django web框架来实现一些简单的功能.每一章都具有完整性和独立性.使用新手在动手做的过程中体会web开发的过程,过程中细节请参考相关文档. 本操作的环境: ==============