django form表单 登录验证抛出错误

最近在学django,在做登录验证时发现不管是用户名不存在,还是密码错误,抛出的错误总是“此用户不存在”

forms.py

class Log(forms.Form):
    username=forms.RegexField('^[^\\/!@#$%^&*<>()+\'\"\n\v\t]+$',min_length=4,error_messages={"invalid": "不能含有特殊字符,例如\'\\\"?等"},
    widget=widgets.TextInput(attrs={"class": "form-control",'placeholder':'User'}))
    password=forms.CharField(min_length=6,validators=[validators.validate_slug],error_messages={"invalid": "密码由字母、数字、下划线或者横线组成"},
        widget=widgets.PasswordInput(attrs={"class": "form-control",'placeholder':'Password'}))

    def clean(self):
        cleaned_data = super().clean()        
        username=cleaned_data.get('username')
        try:
            user=User.objects.get(uname=username)
            pwd=cleaned_data.get('password')
            if not check_password(pwd,user.upassword):
                raise ValidationError('密码错误')
        except :               
            raise ValidationError('不存在此用户')

django form表单 登录验证抛出错误_第1张图片
用户名不存在和密码错误都显示不存在此用户,后来改了一行代码,问题解决了。

class Log(forms.Form):
    username=forms.RegexField('^[^\\/!@#$%^&*<>()+\'\"\n\v\t]+$',min_length=4,error_messages={"invalid": "不能含有特殊字符,例如\'\\\"?等"},
    widget=widgets.TextInput(attrs={"class": "form-control",'placeholder':'User'}))
    password=forms.CharField(min_length=6,validators=[validators.validate_slug],error_messages={"invalid": "密码由字母、数字、下划线或者横线组成"},
        widget=widgets.PasswordInput(attrs={"class": "form-control",'placeholder':'Password'}))

    def clean(self):
        cleaned_data = super().clean()        
        username=cleaned_data.get('username')
        try:
            user=User.objects.get(uname=username)
            pwd=cleaned_data.get('password')
            if not check_password(pwd,user.upassword):
                raise ValidationError('密码错误')
        except User.DoesNotExist:#不加User.DoesNotExist这个异常名,如果用户存在,但密码错误的话总是会返回'不存在此用户',因为raise ValidationError('密码错误')抛出错误,又会被except捕获                  
            raise ValidationError('不存在此用户')

以前习惯了直接写except:,不写异常名,结果造成了这个错误,浪费了我半小时找错误

你可能感兴趣的:(Python)