没有任何检查点{% if user.is_authenticated %}
在您的登录模板中。如果用户已通过身份验证,那么您的custom_login
view 会将他们重定向到主页。
如果帐户处于非活动状态,则表单将无效并且用户将无法登录。表单的错误将如下所示:
{'__all__': [u'This account is inactive.']}
因此检查{% if 'inactive' in form.errors %}
不起作用,因为错误是与密钥一起存储的__all__
, not inactive
.
你可以做{% if 'This account is inactive.' in form.non_field_errors %}
但这非常脆弱,如果 Django 更改了非活动用户的错误消息文本,就会崩溃。
最好显示实际的错误,而不是试图找出模板中的错误类型。显示非字段错误的最简单方法是包括:
{{ form.non_field_errors }}
或者,如果您需要更多控制:
{% for error in form.non_field_errors %}
{{ error }}
{% endfor %}
如果您需要更改非活动用户的错误消息,您可以对身份验证表单进行子类化,然后在登录视图中使用它。
my_error_messages = AuthenticationForm.error_messages.copy()
my_error_messages['inactive'] = 'My custom message'
class MyAuthenticationForm(AuthenticationForm):
error_messages = my_error_messages