1

我想知道我们如何自定义当我们在 Django 中内置的 UserCreationForm 的 password1 和 password2 字段中输入 2 个不同的密码时显示的错误消息。我试过这个

def __init__(self,*args, **kwargs):
    super(CreateUserForm,self).__init__(*args, **kwargs)

    self.fields['password2'].error_messages.update({
        'unique': 'Type smtn here!'
    })

我在这个过程中做错了吗?在我的模板中,这是错误消息的代码。

<span id="error">{{form.errors}}</span>

请告诉我是否有其他方法可以做到这一点。我正在使用模型表格。

class CreateUserForm(UserCreationForm):
  class Meta:
    model = User
    fields = ['username','email','password1','password2']
  def __init__(self,*args, **kwargs):
    super(CreateUserForm,self).__init__(*args, **kwargs)

    self.fields['password2'].error_messages.update({
        'unique': 'Type smtn here!'
    })
4

1 回答 1

0

正如您在django 的源代码中UserCreationForm看到的那样。

此错误消息由触发clean_password2()并使用self.error_messages['password_mismatch']. 这意味着您基本上必须error_messages在子表单中覆盖:

class CreateUserForm(UserCreationForm):

    error_messages = {
        'password_mismatch': 'Type smtn here!',
    }

或者,如果您想确保不丢失error_messagesdict 中可能的其他条目(尽管它目前是唯一的条目),您还可以更新 dict 中的__init__

class CreateUserForm(UserCreationForm):

    def __init__(self, *args, **kwargs):
        self.error_messages['password_mismatch'] = 'Type smtn here!'
        super().__init__(*args, **kwargs)
于 2020-11-06T15:30:01.160 回答