【问题标题】:Django: Override form.errors messages on UserCreationFormDjango:覆盖 UserCreationForm 上的 form.errors 消息
【发布时间】:2020-07-19 05:50:55
【问题描述】:

我正在尝试覆盖(添加语言)form.errors 的消息。我试过这个:

forms.py

class CreateUserForm(UserCreationForm):
    class Meta:
        model = User
        fields = ['username', 'email', 'password1', 'password2']


    def __init__(self, *args, **kwargs):
        super(CreateUserForm, self).__init__(*args, **kwargs)
        self.error_messages['duplicate_username'] = 'some message'

表单提交后没有保存,因为用户名是唯一的,并且模板上显示错误。我想对密码做同样的事情,但我找不到每个密码验证的错误密钥。可以给我吗?

【问题讨论】:

标签: python django


【解决方案1】:

将 Meta 类中的 error_messages--(Django doc) 属性设置为,

class CreateUserForm(UserCreationForm):
    class Meta:
        model = User
        fields = ['username', 'email', 'password1', 'password2']
        error_messages = {
            'username': {
                'unique': 'Your Custom Error Message here !!!',
            },
        }

如果你想覆盖密码不匹配错误信息,覆盖表单类(不是Meta类)中的error_messages属性,如下所示,

class CreateUserForm(UserCreationForm):
    error_messages = {
        'password_mismatch': "Your Password Mismatch For 'UserCreationForm' class",
    }
    # other code

【讨论】:

  • 你有密码验证错误的文档吗?我正在尝试覆盖它们
  • 如何覆盖密码的帮助文本?比如“这个密码太短,这个密码太普通等等”
  • 由于 OP 问题已解决,请提出不同的问题。除此之外,如果您阅读官方 Django 文档,这将是一个很好的开始
  • 我一直在寻找,但我刚刚找到了 1.8 或 2.0 版本的信息
  • 官方文档有Django 1.8+版本信息。
猜你喜欢
  • 2011-04-28
  • 2011-07-15
  • 2010-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-16
  • 1970-01-01
相关资源
最近更新 更多