A couple of things I have figure out as a result with form validation errors in the template.
{{ form.non_field_errors }} is for a ValidationError that is for the whole form.
A snippet of my login.html template
<div id="welcome_login" title="Welcome To My Site"> <p><b>Admin Login</b></p> <form action="." method="post" enctype="multipart/form-data" class="forms" name="form" >{% csrf_token %} {% if form.non_field_errors %} <div class="response-msg error ui-corner-all"> <span>Error message</span> {{ form.non_field_errors }} </div> {% endif %} <ul> <li> <label for="id_username" class="desc">{% trans 'Username:' %}</label> <div> {% if form.username.errors %} <div class="response-msg error ui-corner-all"> <span>Error message</span> {{ form.username.errors }} </div> {% endif %} <input type="text" tabindex="1" maxlength="255" value="" class="field text full" name="username" id="email" /> </div> </li> <li> <label for="id_password" class="desc">{% trans 'Password:' %}</label> <div> {% if form.password.errors %} <div class="response-msg error ui-corner-all"> <span>Error message</span> {{ form.password.errors }} </div> {% endif %} <input type="password" tabindex="1" maxlength="255" value="" class="field text full" name="password" id="password" /> <input type="hidden" name="this_is_the_login_form" value="1" /> </div> </li> </ul> </form> </div>
More to come on django auth