Bro*_*ock 50 forms django message
如何为项目中的所有应用程序(或至少1个应用程序)覆盖默认表单错误消息(例如:需要使用其他语言)
谢谢!
小智 71
最简单的方法是将一组默认错误提供给表单字段定义.表单字段可以为其指定一个命名参数.例如:
my_default_errors = {
'required': 'This field is required',
'invalid': 'Enter a valid value'
}
class MyForm(forms.Form):
some_field = forms.CharField(error_messages=my_default_errors)
....
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.
小智 8
要全局覆盖"required"错误消息,请在Field上设置default_error_messages类属性:
# form error message override
from django.forms import Field
from django.utils.translation import ugettext_lazy
Field.default_error_messages = {
'required': ugettext_lazy("This field is mandatory."),
}
Run Code Online (Sandbox Code Playgroud)
这需要在实例化任何字段之前发生,例如通过将其包含在settings.py中.
也来自google,我需要的是覆盖表单中所有字段的默认必需消息,而不是每次定义新表单字段时都传递error_messages参数.此外,我还没有准备好深入研究i18n,这些应用程序不需要多语言.这篇博客文章中的评论最接近我想要的内容: -
http://davedash.com/2008/11/28/custom-error-messages-for-django-forms/
对于所有需要消息的表单字段,这就是我所做的: -
class MyForm(forms.Form):
def __init__(self, *args, **kwargs):
super(MyForm, self).__init__(*args, **kwargs)
for k, field in self.fields.items():
if 'required' in field.error_messages:
field.error_messages['required'] = 'You have to field this.'
class MUserForm(MyForm):
user = forms.CharField(
label="Username",
)
....
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
36229 次 |
| 最近记录: |