Python自动化之form验证二

class LoginForm(forms.Form):

    user = fields.CharField()
    pwd = fields.CharField(validators=[])

    def clean_user(self):
        c = models.UserInfo.objects.filter(name=self.cleand_data['user']).count()
        if not c:
            return self.cleand_data['user']
        else:
            raise ValidationError('用户名已经存在',code='xxx')

    def clean_pwd(self):
        return self.cleand_data['email']

    def clean(self):

        c = models.UserInfo.objects.filter(name= self.cleand_data['user'],pwd=self.cleand_data['pwd']).count()
        if c:
            return self.cleand_data
        else:
            raise ValidationError('用户名或密码错误')

    def _post_clean(self):
        pass

如果单独验证每个字段是否有错误,需要自定义钩子clean_字段名称
如果做整体的验证需要clean钩子
__post_cleanclean验证完之后

    from django.core.exceptions import NON_FIELD_ERRORS
    obj = RegisterForm(request.POST)
    if obj.is_valid():
        obj.cleand_data

    else:
        obj.errors
        {
            'user':[{'code':'required','message':'xxxx'}],
            'pwd':[{'code':'required','message':'xxxx'}],
            # 上面每个字段的错误信息放在里面,那clean总的错误信息放在哪里?
            '__all__':[],  # 特殊的整体错误信息,放在这里
            # NON_FIELD_ERRORS:[], 和 __all__ 一个意思。
        }

转载于:https://www.cnblogs.com/wspblog/p/6359646.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值