覆盖表单的 clean 方法以自定义错误消息

S_M

我无法覆盖内置 Django 表单 ( django.contrib.auth.SetPasswordForm ) 的干净方法此表单有两个字段:new_password1 和 new_password2。

所以在我的 views.py 中,我调用了自定义表单 ( MySetPasswordForm):

def reset_confirm(request, uidb64=None, token=None):
    return password_reset_confirm_delegate(request,
        template_name='app/reset_confirm.html',
        set_password_form = MySetPasswordForm, uidb64=uidb64, 
        token=token, post_reset_redirect=reverse('main_page'))

在我的 forms.py 中:我想定义我自己的 clean 方法来显示我自定义的错误消息。我是这样写的MySetPasswordForm

from django.contrib.auth.forms import SetPasswordForm
class MySetPasswordForm(SetPasswordForm):
    error_messages = {  'password_mismatch': _("Missmatch!"),  }

    def clean(self):
        password1 = self.cleaned_data.get('new_password1', '')
        password2 = self.cleaned_data.get('new_password2', '')

        print password1  #prints user's entered value
        print password2  #prints nothing!!
        print self.data['new_password2']  #prints user's entered value

        if password1 == '':
            self._errors["new_password1"] = ErrorList([u"enter pass1!"])

        if password2 == '':
            self._errors["new_password2"] = ErrorList([u"enter pass2"])

        elif password1 != password2:
            raise forms.ValidationError(
                    self.error_messages['password_mismatch'],
                    code='password_mismatch',
                )
        return self.cleaned_data   

问题是当用户输入重复密码错误时,不是得到"Missmatch" error,而是给出"enter pass2"print password2不会打印用户的密码2输入的值。

我在这段代码中做错了什么?!定制错误消息的最佳方法是什么?

ps 在视图中使用原始 SetPasswordForm 工作正常。

阿拉斯代尔

SetPasswordForm将检查new_password1new_password2匹配的clean_new_password2方法。

当密码不匹配时,new_password2不包含在 中self.cleaned_data,因此您无法在clean方法中访问它

如果您想覆盖密码不匹配的错误消息,那么在error_messagesdict 中设置它是正确的方法。然后我会clean从您的表单中删除该方法。

如果您需要required为每个字段提供不同的错误消息,您可以在__init__方法中设置它

class MySetPasswordForm(SetPasswordForm):
    error_messages = {
        'password_mismatch': _("Missmatch!"),  
        'required': _("Please enter a password"),  # If you do not require the fieldname in the error message
    }

    def __init__(self, *args, **kwargs):
        super(MySetPasswordForm, self).__init__(*args, **kwargs)
        self.fields['new_password1'].error_messages['required'] = _("enter pass1!")

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Django自定义表单-__init__方法可用时is_valid不调用clean方法

来自分类Dev

如何覆盖自定义操作中出现的错误消息

来自分类Dev

AngularJS自定义表单验证错误消息

来自分类Dev

AngularJS自定义表单验证错误消息

来自分类Dev

HTML表单中的自定义错误消息

来自分类Dev

CFWheels:表单验证自定义错误消息

来自分类Dev

覆盖Spring表单错误消息

来自分类Dev

覆盖Django ModelForm的Clean_unique方法

来自分类Dev

我在我的 Django 表单中覆盖了 clean() 方法,并修复了一个出现的错误。但我不明白错误是如何修复的

来自分类Dev

Django表单Clean_Data键错误

来自分类Dev

如何重写UpdateView生成的表单的clean方法?

来自分类Dev

Django表单中日期字段的Clean方法

来自分类Dev

JQuery在多个位置(表单顶部和表单级别)验证自定义错误消息

来自分类Dev

如何在自定义用户配置文件创建表单中正确覆盖保存方法?

来自分类Dev

如何在自定义UserChangeForm中覆盖用户名的django'unique'错误消息

来自分类Dev

如何在自定义UserChangeForm中覆盖用户名的django'unique'错误消息

来自分类Dev

如何在Laravel表单验证错误消息中提供自定义字段名称

来自分类常见问题

在自定义spring boot登录表单上显示错误登录消息

来自分类Dev

Grails Spring Security自定义登录表单-错误消息在哪里?

来自分类Dev

营销人员自定义提交操作错误消息的Web表单

来自分类Dev

Joomla-来自表单无效字段的自定义错误消息

来自分类Dev

无法获取错误消息Spring Security 4自定义登录表单

来自分类Dev

在 Spring 5 中,如何自定义表单验证错误消息?

来自分类Dev

向 Laravel 忘记密码表单添加额外问题并自定义其错误消息

来自分类Dev

模型的clean()方法和表单的clean()方法之间是否有任何关系?

来自分类Dev

覆盖基于通用类的表单并使用自定义表单的属性?

来自分类Dev

自定义表单和FieldRenderingControl错误

来自分类Dev

django自定义表单验证错误

来自分类Dev

在Django表单的clean方法之后更改ChoiceField选项

Related 相关文章

  1. 1

    Django自定义表单-__init__方法可用时is_valid不调用clean方法

  2. 2

    如何覆盖自定义操作中出现的错误消息

  3. 3

    AngularJS自定义表单验证错误消息

  4. 4

    AngularJS自定义表单验证错误消息

  5. 5

    HTML表单中的自定义错误消息

  6. 6

    CFWheels:表单验证自定义错误消息

  7. 7

    覆盖Spring表单错误消息

  8. 8

    覆盖Django ModelForm的Clean_unique方法

  9. 9

    我在我的 Django 表单中覆盖了 clean() 方法,并修复了一个出现的错误。但我不明白错误是如何修复的

  10. 10

    Django表单Clean_Data键错误

  11. 11

    如何重写UpdateView生成的表单的clean方法?

  12. 12

    Django表单中日期字段的Clean方法

  13. 13

    JQuery在多个位置(表单顶部和表单级别)验证自定义错误消息

  14. 14

    如何在自定义用户配置文件创建表单中正确覆盖保存方法?

  15. 15

    如何在自定义UserChangeForm中覆盖用户名的django'unique'错误消息

  16. 16

    如何在自定义UserChangeForm中覆盖用户名的django'unique'错误消息

  17. 17

    如何在Laravel表单验证错误消息中提供自定义字段名称

  18. 18

    在自定义spring boot登录表单上显示错误登录消息

  19. 19

    Grails Spring Security自定义登录表单-错误消息在哪里?

  20. 20

    营销人员自定义提交操作错误消息的Web表单

  21. 21

    Joomla-来自表单无效字段的自定义错误消息

  22. 22

    无法获取错误消息Spring Security 4自定义登录表单

  23. 23

    在 Spring 5 中,如何自定义表单验证错误消息?

  24. 24

    向 Laravel 忘记密码表单添加额外问题并自定义其错误消息

  25. 25

    模型的clean()方法和表单的clean()方法之间是否有任何关系?

  26. 26

    覆盖基于通用类的表单并使用自定义表单的属性?

  27. 27

    自定义表单和FieldRenderingControl错误

  28. 28

    django自定义表单验证错误

  29. 29

    在Django表单的clean方法之后更改ChoiceField选项

热门标签

归档