【问题标题】:Custom Django AuthenticationForm with validation depending on prior error messages根据先前的错误消息进行验证的自定义 Django AuthenticationForm
【发布时间】:2013-08-27 16:35:30
【问题描述】:

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

网址:py:

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 ,我可以在其中捕获错误...但我不知道如何备份它,因为这里没有请求。

这是需要自定义登录视图的答案吗?

谢谢!

【问题讨论】:

    标签: django django-forms


    【解决方案1】:

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

    Using AuthenticationForm in Django

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-08
      • 2011-07-03
      • 2016-04-18
      • 2016-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多