【发布时间】:2014-05-08 18:23:45
【问题描述】:
请帮助修复验证密码更改表单。
urls.py:
url(r'^userprofile/password_page/$', 'views.password_page', name='password_page', ),
url(r'^userprofile/password_page_changed/$', 'views.password_page_changed', ),
views.py:
@login_required
def password_page(request):
if request.method == 'POST':
form = ChangePasswordForm(data=request.POST, request=request)
if form.is_valid():
username = User.objects.get(username__exact=request.user.username)
username.set_password(form.cleaned_data.get('password1'))
username.save()
return HttpResponseRedirect('/userprofile/password_page_changed/')
else:
form = ChangePasswordForm(request=request)
t = loader.get_template('password_page.html')
c = RequestContext(request, {
'form': form,
}, [custom_proc])
return HttpResponse(t.render(c))
forms.py:
class ChangePasswordForm(forms.Form):
password_old = forms.CharField(max_length=30, widget=forms.PasswordInput())
password1 = forms.CharField(widget=forms.PasswordInput())
password2 = forms.CharField(widget=forms.PasswordInput())
def __init__(self, *args, **kwargs):
self.request = kwargs.pop('request', None)
super(ChangePasswordForm, self).__init__(*args, **kwargs)
def clean_password_old(self):
cleaned_data = self.cleaned_data
password_old = cleaned_data.get("password_old")
if not self.request.user.check_password(password_old):
raise forms.ValidationError("not true pass.")
else:
return password_old
def clean(self):
cleaned_data = self.cleaned_data
password1 = cleaned_data.get("password1")
password2 = cleaned_data.get("password2")
if password1 != password2:
raise forms.ValidationError("not match.")
else:
return cleaned_data
password_page.html:
<form class="password_form common_form" action="{% url 'password_page' %}" method="POST">
{% csrf_token %}
<div class="cell">
<label class="label">{{ form.password_old.label }}</label>
{{ form.password_old }}
{{ form.password_old.errors }}
</div>
<div class="cell">
<label class="label">{{ form.password1.label }}</label>
{{ form.password1 }}
{{ form.password1.errors }}
</div>
<div class="cell">
<label class="label">{{ form.password2.label }}</label>
{{ form.password2 }}
{{ form.password2.errors }}
</div>
<div class="cell">
<input class="submit btn btn-info" type="submit" value="Изменить" />
</div>
</form>
问题是当用户进入时:
密码旧:qqq
密码1:q密码2:qq
不是因为显示新密码“不匹配”的消息。
我需要输入不同的密码1和密码2显示错误信息验证'不匹配'
【问题讨论】:
-
最后2行我其实没看懂,能解释一下吗?