自定义Django AuthenticationForm,具有验证,具体取决于先前的错误消息

时间:2013-08-24 20:39:52

标签: django django-forms

我正在扩展Django的AuthenticationForm,以便为用户提供更好的错误消息。如果登录失败,我想对用户的输入执行额外检查,以提供不太通用的消息,向用户解释登录失败的原因。

网址:吡啶:

urlpatterns = patterns(
   'django.contrib.auth.views',
    url(r'^login/$', 'login', {'authentication_form': RemoteLoginAwareLoginForm}, name='auth_login'),
)

forms.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,我能够捕获错误...但我不知道如何报告它,因为这里没有请求。

答案是否需要自定义登录视图?

谢谢!

1 个答案:

答案 0 :(得分:0)

stackoverflow上存在类似的问题。但我不确定它是否能解决你的问题。

Using AuthenticationForm in Django