好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Django - 自定义Form校验规则

自定义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('两次密码输入不一致')  # 错误信息放在“__all__”里

注意:全局钩子与局部钩子的函数名、判断异常和返回值都是根据内部源码写的 1. 函数名为“clean_字段名”或者“clean” 2. 数据校验有误,只能抛ValidationError异常,因为在源码中捕获ValidationError异常 3. 数据校验成功,返回数据

查看更多关于Django - 自定义Form校验规则的详细内容...

  阅读:21次

上一篇: Python中数字进制的转换

下一篇:django(4)