2011-04-07 4 views
1

사용자가 정보를 업데이트하고 암호를 변경하기위한 페이지를 작성하려고합니다.사용자가 잘못된 암호를 입력했다는 오류 메시지 표시

나는 지금 일하고있다. 내가 제공 한 코드는 작동하지만 사용자에게 잘못된 비밀번호를 입력하는 방법을 알지 못합니다. 사용자가 암호를 입력하면 양식이 유효하지만 잘못된 암호를 입력하면 양식이 유효하지 않다고 말하고 싶습니다. 그러나 forms.errors라고하는 else stmt에 forms.ValidationError ("some error msg")를 넣으면 서식 파일로 돌아 가지 않지만 컴파일러 msg 페이지에 오류 msg가 표시됩니다.

이것은 내 django.contrib.auth.models 가져 오기 사용자

def edit_page(request): 

u = request.user 

if request.method == 'POST': 

    form = EditUserForm(request.POST) 

    if form.is_valid(): 

     if u.check_password(form.cleaned_data['oldPassword']): 

      u.set_password(form.cleaned_data['password1']) 

      u.save() 

      return HttpResponseRedirect('/')  

     else: 

      form.errors //Where I put forms.ValidationError() 

else: 

    form = EditUserForm() 

variables = RequestContext(request, { 

    'form': form, 'user': request.user 

})  

return render_to_response(

    'registration/Edit_User.html', 

    variables 

) 

이것은에서 내 forms.pyclass

EditUserForm(forms.Form): 

oldPassword = forms.CharField(
    label=u'Current Password', 
    widget = forms.PasswordInput() 
) 
password1 = forms.CharField(
    label=u'New Password', 
    widget=forms.PasswordInput() 
) 
password2 = forms.CharField(
    label=u'New Password (Again)', 
    widget=forms.PasswordInput() 
) 

def clean_password2(self): 
    if 'password1' in self.cleaned_data: 
     password1 = self.cleaned_data['password1'] 
     password2 = self.cleaned_data['password2'] 
     if password1 == password2: 
      return password2 
    raise forms.ValidationError('Passwords do not match.') 
+1

HTML 양식에 Method = "POST"가 있습니까? – Kugel

+0

예 그래야 할 사항이 있습니다. – user671800

답변

0

문제는 당신 clean_oldPassword 방법에있다. 변수 대신 문자열 'oldPassword'에서 check_password으로 전화하면 당연히 실패합니다.

또한 템플릿에 form.errors이 표시되는지 확인해야 유효성을 확인하지 않는 이유를 알 수 있습니다.

+0

제안 내용으로 변경 했는데도 여전히 편집자 정보 페이지로 돌아갑니다. 일부 print 문을 넣었고 form.isValid() if 문을 전달하지 않습니다. 또한 그것은 암호가 일치하지 않는 것처럼 잘못되었다는 것을 알려주지 만 지금은 아무것도하지 않습니다. 또한 나는 템플릿에서 from.erros를 가지고있다. – user671800

관련 문제