这是我第一次使用SetPasswordForm。表单无效,但不显示错误消息。所以我很难找出哪个部分出了问题。在
在网址.py在
url(r'^password_change/(?P<username>[-\w.]+)/$', views.password_change, name='password_change'),
url(r'^password_change_done/$', views.password_change_done, name='password_change_done'),
当用户输入新密码,如果操作成功,页面将重定向到“密码更改完成”。在
在视图.py在
^{pr2}$在表单.py在
class PasswordChangeForm(SetPasswordForm):
error_messages = dict(SetPasswordForm.error_messages, **{
'password_incorrect': ("Your old password was entered incorrectly. Please enter it again."),
})
oldpassword = forms.CharField(
label=("Old password"),
strip=False,
widget=forms.PasswordInput(attrs={'autofocus': True}),
)
field_order = ['oldpassword', 'password1', 'password2']
def __init__(self, user, data, **kwargs):
self.user = user
super(PasswordChangeForm, self).__init__(data, **kwargs)
def clean_oldpassword(self):
oldpassword = self.cleaned_data["oldpassword"]
if not self.user.check_password(oldpassword):
raise forms.ValidationError(
self.error_messages['password_incorrect'],
code='password_incorrect',
)
return oldpassword
在模板.py在
{{ form.errors }}
{{ form.non_field_errors }}
{% if error_message %}
<h2><strong>{{ error_message }}</strong></h2>
{% else %}<br>
{% endif %}
<form class="form-horizontal" role="form" action="{% url 'blog:password_change' user.username %}" method="post" enctype="multipart/form-data">
{% csrf_token %}
{{ form.as_p }}
<button type="submit" class="button-primary">submit</button></div>
</form>
我把{表格错误}}和{表单非字段错误}}所以如果发生错误,它可以在网站上显示错误信息。然而,到目前为止,并没有消息显示,似乎什么也没有发生,每当用户点击提交按钮。在
这里有很多问题,但主要的问题——正如我之前告诉过你的——是如何将东西传递给模板的。您需要遵循文档中所示的模式,并且在变量命名方面需要保持一致性。在
首先,将您的密码检查移到表单本身:
现在,修复您的视图:
^{pr2}$最后,从模板中删除
{{ error_messages }}
。在相关问题 更多 >
编程相关推荐