在 Django 中,假设我有一个用户字段,我想更改“此用户已存在”错误消息。我知道我可以解析字典,例如 forms.py
like
class MyForm(Form):
.
.
.
error_messages={"unique": ("Wups, enter a unique username")}
但它需要我知道键/值对,这可能并不总是很明显键是什么。
有没有办法(在 Django 文档中似乎很分散)这些错误消息键/值对在哪里,或者找到它们的最简单方法是什么?
答案 0 :(得分:2)
常见的有
'null': 'This field cannot be null.'
'blank': 'This field cannot be blank.'
'invalid' : 'Enter a valid email address.'
'invalid_choice': 'Value is not a valid choice.'
'required': 'This field is required.'
'max_length': '...'
'min_length': '...'
'max_value': '...'
'min_value': '...'
'max_digits': '...'
'invalid_list': '...'
'max_decimal_places': '....'
'empty': '....'
...
并且对于您面临的任何其他错误消息并且不知道类型,您可以简单地执行 form.errors.as_json()
它会将错误返回为
{
"sender": [{"message": "Enter a valid email address.", "code": "invalid"}],
"subject": [{"message": "This field is required.", "code": "required"}],
}
然后您可以将代码用作 key
并为其编写消息。
答案 1 :(得分:0)
Django 中的所有消息 - 包括您要更改的错误消息 - 都被翻译,并存储在翻译文件(*.po 扩展名)中。您只能覆盖这些文件,然后 Django 将使用您支持的任何语言的版本。
阅读更多关于 Django 的一般翻译:https://docs.djangoproject.com/en/3.1/topics/i18n/ https://docs.djangoproject.com/en/3.1/topics/i18n/translation/
阅读有关创建翻译文件的信息: https://docs.djangoproject.com/en/3.1/topics/i18n/translation/#localization-how-to-create-language-files
要转储所有翻译,可以将 Django 附带的 JavaScriptCatalog
或 JsonCatalog
添加到您的 urls.py
中,如下所述:https://docs.djangoproject.com/en/3.1/topics/i18n/translation/#module-django.views.i18n
这将包括 INSTALLED_APPS 中列出的所有应用的所有翻译,除非您对其进行限制。
答案 2 :(得分:0)
您可以在 Django 文档中找到特定字段类型 on this page 的所有错误消息。对于每种字段类型,都指定了一个 Error message keys
。
您也可以查找要使用的字段的代码,应该直接指定一个 default_error_messages
或在其祖先中指定。仔细查看所有这些信息,了解您可以覆盖的所有错误消息。