Python django打印模板中的表单错误

Python django打印模板中的表单错误,python,django,forms,validation,Python,Django,Forms,Validation,我有一张表格。表格 class RegistrationForm(forms.Form): username = forms.CharField(max_length=20) password1 = forms.CharField(max_length=20) password2 = forms.CharField(max_length=20) email = forms.EmailField(max_length=50) def clean_passw

我有一张
表格。表格

class RegistrationForm(forms.Form):
    username = forms.CharField(max_length=20)
    password1 = forms.CharField(max_length=20)
    password2 = forms.CharField(max_length=20)
    email = forms.EmailField(max_length=50)

    def clean_password2(self):
        password1 = self.cleaned_data.get("password1")
        password2 = self.cleaned_data.get("password2")
        if password1 and password2 and password1 != password2:
            raise forms.ValidationError(" The two password didn't match")

        return password2
在我看来,我正在检查重复的用户名或电子邮件

if User.objects.filter(Q(username=username) | Q(email=user_email)).exists():
    raise ValidationError("Username or email exist")
现在,这个错误没有显示在表单中。当调试为真时,它会显示在我的浏览器上。 我不想用模型表格


需要建议如何在表单中打印此错误

您需要在表单类中存储所有验证逻辑。这正是django中表单层的用途

您可以重写clean方法以访问用户名和密码字段数据:

def clean(self):
   cleaned_data = super(RegistrationForm, self).clean()
   username = cleaned_data['username']
   user_email = cleaned_data['email']
   if User.objects.filter(Q(username=username) | Q(email=user_email)).exists():
        raise ValidationError("Username or email exist")
Form.clean()引发的任何错误都不会与任何特定字段相关联。可能,您需要添加{{forms.non_field_errors}}以在模板中列出此类错误

阅读更多: