表单字段验证 - 谁呈现错误?
Form field validation - who renders the error?
我有一个模型,其中包含 2 个 PositiveSmallIntegerField
类型的字段。
我有这个模型和这些字段的 ModelForm
。
我的验证工作正常。但是如果我输入负数或字母数字字符串,我会收到某种 pop-up 的验证错误(见下图)。我的问题:浏览器是否呈现验证错误? Django 不应该将错误呈现为 HTML 代码吗?
我可以用 django 翻译来翻译这个错误吗?
此外,在我的 clean
表单方法中,我有一个自定义验证,我这样做:
if cleaned_data['capacity_min'] > cleaned_data['capacity_max']:
raise ValidationError(_("Some message"))
我可以翻译这个,它按照我的预期呈现,页面中的简单 HTML 代码
谢谢
Firefox 就是这样
这就是 Google Chrome 的情况
这些提示错误是由浏览器显示的。浏览器拒绝向服务器提交无效表单,因此您的 django 验证甚至没有 运行.
要解决此问题,请将您的小部件字段从 NumberInput
更改为 TextInput
:
class MyForm(forms.ModelForm):
class Meta:
...
widgets = {
'capacity_min': forms.TextInput(),
'capacity_max': forms.TextInput(),
}
我有一个模型,其中包含 2 个 PositiveSmallIntegerField
类型的字段。
我有这个模型和这些字段的 ModelForm
。
我的验证工作正常。但是如果我输入负数或字母数字字符串,我会收到某种 pop-up 的验证错误(见下图)。我的问题:浏览器是否呈现验证错误? Django 不应该将错误呈现为 HTML 代码吗? 我可以用 django 翻译来翻译这个错误吗?
此外,在我的 clean
表单方法中,我有一个自定义验证,我这样做:
if cleaned_data['capacity_min'] > cleaned_data['capacity_max']:
raise ValidationError(_("Some message"))
我可以翻译这个,它按照我的预期呈现,页面中的简单 HTML 代码
谢谢
Firefox 就是这样
这就是 Google Chrome 的情况
这些提示错误是由浏览器显示的。浏览器拒绝向服务器提交无效表单,因此您的 django 验证甚至没有 运行.
要解决此问题,请将您的小部件字段从 NumberInput
更改为 TextInput
:
class MyForm(forms.ModelForm):
class Meta:
...
widgets = {
'capacity_min': forms.TextInput(),
'capacity_max': forms.TextInput(),
}