显示字段的所有可能的错误消息 (Django)

时间:2021-04-01 11:06:42

标签: django

在 Django 中,假设我有一个用户字段,我想更改“此用户已存在”错误消息。我知道我可以解析字典,例如 forms.py like

class MyForm(Form):
.
.
.
  error_messages={"unique": ("Wups, enter a unique username")}

但它需要我知道键/值对,这可能并不总是很明显键是什么。

有没有办法(在 Django 文档中似乎很分散)这些错误消息键/值对在哪里,或者找到它们的最简单方法是什么?

3 个答案:

答案 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 附带的 JavaScriptCatalogJsonCatalog 添加到您的 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 或在其祖先中指定。仔细查看所有这些信息,了解您可以覆盖的所有错误消息。

相关问题