2016-09-19 13 views
0

나는 사용자 등록과 로그인을 위해 django allauth을 사용했습니다. 템플릿에 {{ form.has_errors }}을 사용하여 오류를 표시했지만 오류가 템플릿에 표시되지 않았습니다. 템플릿에 오류가 표시되지 않는 이유는 무엇입니까? allauth login.html(account/login.html)템플릿에 오류가 표시되지 않습니다.

{% block content %} 
<div class="login-box"> 
     <div class="row"> 
     <div class="col-xs-12 col-sm-12 col-md-6 col-md-offset-3 login-area"> 
     <span class="error"> 
      {% if form.has_errors %} 
      <p>Your username and password didn't match. Please try again.</p> 
      {% endif %} 
     </span> 
     <div class="panel panel-default"> 
     <div class="panel-heading login-header">{% trans "Sign In" %}</div> 
     <div class="panel-body"> 
      <form class="login" method="POST" action="{% url 'account_login' %}"> 
       {% csrf_token %} 
       <div class="form-group form-group-lg"> 
       <label for="emailAddress">Email address</label> 
       <input type="email" class="form-control" id="emailAddress id_login" name="login" placeholder="Email"> 
       </div> 
       <div class="form-group form-group-lg"> 
       <label for="password">Password</label> 
       <input type="password" class="form-control" id="password id_password" name="password" placeholder="Password"> 
       </div> 
       <div class="form-group"> 
       {% if redirect_field_value %} 
       <input type="hidden" name="{{ redirect_field_name }}" value="{{ redirect_field_value }}" /> 
       {% endif %} 
       </div> 
       <button class="btn-block signin-btn btn-sm btn-primary pull-right m-t-n-xs" type="submit">{% trans "Sign In" %}</button> 
      </form> 
      </div> 
      <div class="panel-footer"> 
       <a class="button secondaryAction" href="{% url 'account_reset_password' %}">{% trans "Forgot Password?" %}</a> 
      </div> 
     </div> 
     </div> 
    </div> 
</div> 
{% endblock %} 

답변

1

시도해보십시오. 필드에 연결되지 않은 형태에 의해 제기 된 오류는 non_field_errors

{% if form.non_field_errors %} 
      <ul class='form-errors'> 
       {% for error in form.non_field_errors %} 
        <li>{{ error }}</li> 
       {% endfor %} 
      </ul> 
    {% endif %} 

나에 저장이 하나

{% if form.errors %} 
      <p>Your username and password didn't match. Please try again.</p> 
{% endif %} 
을하려고 당신의 방식으로 표시하려면
1

에서

코드 필드는 특정 에러 코드를 에러 있는지 여부 부울 지정 단계를 반환 has_error

그의 방법의 오해 보인다. code가 None이면 필드에 오류가있는 경우 True를 반환합니다.

양식을 수동으로 렌더링한다는 사실과 결합됩니다. 일반적으로 두 가지 유형의 양식 오류, 비 필드 오류 및 각 필드와 관련된 오류 (유효성 검사가 실패한 경우)가 있습니다. 위의 메서드는 필드 이름을 매개 변수로 사용하고 필드가 유효성 검사에 실패하면 true를 반환합니다.

현재 접근법을 계속 진행하면서 대신 form.errors을 확인하거나 각 입력란에 오류를 개별적으로 표시하는 등 몇 가지 옵션이 있습니다.

관련 문제