ユーザーにより良いエラー メッセージを提供するために、Django の AuthenticationForm を拡張しています。ログインが失敗する場合は、ユーザーの入力に対して追加のチェックを実行して、ログインが失敗した理由をユーザーに説明する一般的ではないメッセージを提供したいと考えています。
URL:py:
urlpatterns = patterns(
'django.contrib.auth.views',
url(r'^login/$', 'login', {'authentication_form': RemoteLoginAwareLoginForm}, name='auth_login'),
)
フォーム.py:
class RemoteLoginAwareLoginForm(AuthenticationForm):
def clean(self):
cleaned_data = super(AuthenticationForm, self).clean()
if self.errors: # <==== self.errors is {}, even when login will fail
# Perform additional checks
return cleaned_data
これを行う正しい方法は上記のように clean() をオーバーライドすることだと思いましたが、示されているように、悪い資格情報でログインした場合でも self.errors は空です。full_clean() と validate() もオーバーライドしようとしましたが、どちらもまったく呼び出されませんでした。
アップデート:
コードが実際にユーザーをログインさせようとするまで、私が探しているエラー (資格情報が無効である) は発生しないことに気付きました。エラーをキャッチできるカスタム ModelBackend を追加しました。 ..しかし、ここにはリクエストがないので、それを報告する方法がわかりません。
これにはカスタムログインビューが必要であるという答えですか?
ありがとう!