2016-06-30 9 views
-1

は私が認証system.Theのパスワードが変更取得された使用せずにパスワードを変更したいが、私は成功のメッセージが届かないのですが、代わりに私は、ValueError: The view books.views.password_change didn't return an HttpResponse object. It returned None instead認証システムを使わずにdjangoのパスワードを変更するには?

views.pyとして

def password_change(request): 
    if request.method == 'POST': 
     new_password = request.POST.get('pwd2') 
     user=request.user 
     try: 
      u = User.objects.get(username=user) 
      u.set_password(new_password) 
      u.save() #problem line 
      messages.add_message(request, messages.INFO, 'Password Changed') 
     except User.DoesNotExist: 
      messages.add_message(request, messages.INFO, 'User Does not exist') 
    else: 
     return render(request,"password_change.html",{}) 

マイテンプレートファイルをエラーを取得しています、

<form method="POST"> 
    {% csrf_token %} 
    <div> 
      <p>Username:{{request.user}}</p> 
      <input type="password" name="pwd1" placeholder="Password"> 
      <input type="password" name="pwd2" placeholder="Confirm Password"> 
      <button type="submit">Update Password</button> 
    </div> 
</form> 

URLファイル、

url(r'^password_change/$',views.password_change,name='password_change'), 
+2

メソッド*が* POSTの場合、どのような応答を返したいですか?エラーメッセージが不明な点は何ですか? – Sayse

+0

ちょうどいいメッセージです。 – Bhanukiran

答えて

2

ブロック内に何も返さないからです。tryブロックです。 A messageは、ではなく、HttpResponseとなります。

パスワードが正常に変更されたことを示すHttpResponseを明示的に返す必要があります。

ビュー内のすべてのブランチは、使用可能なものを返さなければならないことに注意してください。したがって、ブロックexceptも同様に固定する必要があります。

+1

@Bhanukiran - 新しい質問がある場合は、新しい質問として提出する必要があります(試して調査したもの)。この回答が*この*質問を解決した場合は、それを受け入れることを検討する必要があります。 – Sayse

関連する問題