django - 如何在 Django 中打印 forms.ValidationError
问题描述
在教程中发现了这一点,但“密码和确认密码不匹配”没有打印到 html 页面。
from django import forms
from django.contrib.auth.models import User
class UserForm(forms.ModelForm):
password = forms.CharField(widget=forms.PasswordInput)
confirm_password = forms.CharField(widget=forms.PasswordInput())
first_name = forms.CharField(max_length=30)
last_name = forms.CharField(max_length=30)
email = forms.EmailField(max_length=254)
class Meta:
model = User
fields = ['username', 'first_name', 'last_name', 'email', 'password','confirm_password']
def clean(self):
cleaned_data = super(UserForm, self).clean()
password = cleaned_data.get("password")
confirm_password = cleaned_data.get("confirm_password")
if password != confirm_password:
raise forms.ValidationError(
"password and confirm_password does not match"
)
更新:在模板中使用 {{form.non_field_errors}}。
解决方案
您可以通过多种方式做到这一点,从您的视图,也从您的模型中
Class UserForm(forms.ModelForm):
pass
def clean_password(self):
data = self.cleaned_data
password = self.cleaned_data.get('password')
confirm_password = self.cleaned_data.get('confirm_password')
if password != confirm_password:
raise forms.ValidationError('Passwords must be same')
顺便说一句,如果使用 Python 3.6 那么 super().method_name(args),如果使用 2.7 那么 super(class_name,self).method_name(args)
推荐阅读
- php - Laravel:将变量传递给视图并将其作为函数中的全局变量访问
- javascript - 我需要比较两个字符串(或数组)并返回它们的相似度百分比,无论它们的顺序如何
- javascript - 如何以方程的形式产生两个值的输出,而不仅仅是输出?
- algorithm - 计算与 0 共享的矩阵中 1 的边数
- java - 是否可以将数组索引作为char?
- osrm - 在 OSRM 前端自定义 UI
- java - 我的矩阵乘法函数返回空白或不正确的输出
- angular - 如何在角度 6 中获取选择属性
- mysql - MySQL 选择 8 个唯一用户,然后选择这 8 个用户中的所有记录,然后选择每 8 个用户的 4 个最新和可用记录?
- jquery - 将 jquery.i18n.properties.js 与 Grails 一起使用