django2.0 forms.ValidationError总是返回'password_mismatch'!

时间:2018-04-07 15:58:01

标签: python django django-models django-forms django-views

我想有效的电子邮件不存在,所以我这样做

forms.py

class RegisterForm(auth_forms.UserCreationForm):
    code = forms.CharField(label=_('valid code'), max_length=6)

    def clean(self):
        cleaned_data = super().clean()
        email = cleaned_data['email']
        if email and User.objects.filter(email=email):
            raise forms.ValidationError(_('email already in use'), code='invalid')
    class Meta:
        model = User
        fields = ('first_name', 'last_name', 'email', 'code')

我希望,当用户注册时,如果电子邮件存在,我会将“已经在用户中的电子邮件”返回给他,现在我只是打印它,当表单无效时,所以我在views.py < / p>

views.py

class RegisterView(SuccessMessageMixin, FormView):
    template_name = 'account/signup.html'
    form_class = RegisterForm
    extra_context = {'page': 'register'}
    success_url = '/'
    success_message = _('register success')

    def form_valid(self, form):
        user = form.save()
        login(self.request, user)
        return super().form_invalid(form)

    def form_invalid(self, form):
        print(form.error_messages)
        error_msg = list(form.error_messages.values())[0]
        return utils.ajax_error(error_msg)

但是,当我运行它时,我会提供一些数据来形成,所有有效的存在email
我应该email aliready in use,但我总是{'password_mismatch': "The two password fields didn't match."} 但是password1password2是一样的! 为什么我总是收到有关密码的错误!

0 个答案:

没有答案