首页 > 其他 > 详细

Django - 自定义Form校验规则

时间:2019-09-03 21:16:09      阅读:115      评论:0      收藏:0      [点我收藏+]

自定义Form校验规则

class MyForm(forms.Form):
    # form可以校验的规则
    username = fields.CharField(max_length=32,min_length=3)  
    password = fields.CharField(max_length=32,min_length=3)
    re_password = fields.CharField(max_length=32,min_length=3)   

局部钩子 - 校验用户名不能重复

def clean_username(self):
    # 获取username
    username = self.cleaned_data['username']

    # 判断用户名是否存在
    if models.User.objects.filter(username=username).count():
        # 存在即不符合规则,必须抛出ValidationError异常
        raise ValidationError('该用户名已存在')
    # 校验通过,则返回清洗后的数据
    return self.cleaned_data['username']

全局钩子 - 检验两次密码输入一致

def clean(self):
    # 获取两次输入的密码
    password = self.cleaned_data['password']
    re_password = self.cleaned_data['re_password']
    
    # 判断是否相等,相等则返回数据,否则抛出ValidationError异常
    if password == re_password:
        return self.cleaned_data
    else:
        raise ValidationError('两次密码输入不一致')

注意:全局钩子与局部钩子的函数名、判断异常和返回值都是根据内部源码写的

1. 函数名为“clean_字段名”或者“clean”

2. 数据校验有误,只能抛ValidationError异常,因为在源码中捕获ValidationError异常

3. 数据校验成功,返回数据

Django - 自定义Form校验规则

原文:https://www.cnblogs.com/863652104kai/p/11454836.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!