重写内置Django表单(django.contrib.auth.SetPasswordForm)的clean方法时遇到问题。此表单有两个字段:新密码1和新密码2。在
所以在我的视图.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'))
在我的表单.py:我想定义自己的clean方法来显示自定义的错误消息。我是这样写的MySetPasswordForm
:
问题是当用户输入的重复密码错误时,它没有得到"Missmatch" error
,而是给出了"enter pass2"
!另外,print password2
不打印用户输入的password2值。在
我在这段代码里做错了什么?!定制错误消息的最佳方法是什么?在
另外,在视图中使用原始的SetPasswordForm可以正常工作。在
当您调用表单超级方法的clean方法时,}为空,您需要重写表单中的clean_new_password2,查找源auth forms
def clean_new_password2(self)
all ready被调用,因此{SetPasswordForm
检查new_password1
和{当密码不匹配时,
new_password2
不包含在self.cleaned_data
中,因此您无法在clean
方法中访问它。如果您想覆盖不匹配密码的错误消息,那么在
error_messages
dict中设置它是正确的方法。然后我将从表单中删除clean
方法。如果每个字段需要不同的
required
错误消息,可以在__init__
方法中设置它。相关问题 更多 >
编程相关推荐