2013-12-08 1 views
1

Мой логин работает отлично, за исключением того, что не отображаются все ошибки. Когда я набираю неверное имя пользователя или пароль, эти ошибки не отображаются, и страница просто обновляется без каких-либо ошибок.django authenticationform не показывает всех ошибок

Однако, когда я оставить одно поле пустым, он показывает правильную ошибку:

Таким образом, отсутствующие ошибки (из источника):

error_messages = { 
    'invalid_login': _("Please enter a correct %(username)s and password. " 
         "Note that both fields may be case-sensitive."), 
    'inactive': _("This account is inactive."), 
} 

мой код:

def login_user(request): 
    """Logs a user into the application.""" 
    auth_form = AuthenticationForm(None, request.POST or None) 

    # The form itself handles authentication and checking to make sure password and such are supplied. 
    if auth_form.is_valid(): 
     (request, auth_form.get_user()) 
     return HttpResponseRedirect(reverse('index')) 

    return render(request, 'login.html', {'auth_form': auth_form}) 

Мои шаблон:

<form action="{% url 'login_user' %}" method="post" class="login">{% csrf_token %} 
    <div> 
     <input name="username" placeholder="Username:" type="text" name="username"  value="" id="username" class="login"> 
     {{ auth_form.username.errors }} 
    </div> 
    <div> 
     <input name="password" placeholder="Password:" type="password" name="password" value="" id="password" class="login"> 
     {{ auth_form.password.errors }} 
    </div> 
    <div> 
     <center> 
      <a href="{% url 'register_user' %}"> 
       register 
      </a> 
      &nbsp;&nbsp;&nbsp;&nbsp; 
      <button type="submit" class="link"> 
       login 
      </button> 
     </center> 
    </div> 
</form> 

что я делаю неправильно?

ответ

1

Вы не указали form.non_field_errors в свой шаблон. Для примера см. Документы на странице customizing the form template.

В качестве ответа на вопрос AuthenticationForm принимает запрос в качестве первого аргумента. Странно, что вы проезжаете None вместо request.

Смежные вопросы