title: maintain focus in django form when displaying errors
body: <p>I have a home view with a form as footer to contact. Everything works fine, except that when there is some error in the form and the view redisplays everything with the corresponding errors, it doesn't keep the focus in the form (it shows the view as though you were entering for the first time, and so users can't see their form wasn't correct unless they scroll down). </p>
  
  <p>I had thought of sending a message with JS, but it is really ugly.
  I have tried with all the ways I have found to display errors ( raising them from different functions) but the problem persists. </p>
  
  <p>Any idea?</p>
  
  <p>Besides, even though I set required = False, the form keeps showing a message ("Complete this field") which I think comes from html, how can I remove it?</p>
  
  <p>Thank you very much!</p>
  
  <p>Code:</p>
  
  <p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
  <div class="snippet-code">
  <pre class="snippet-code-html lang-html prettyprint-override"><code>&lt;form method="post"&gt;
    {% csrf_token %}
  
    {{ form.non_field_errors }}
  
  
  &lt;div class="fieldWrapper"&gt;
      {{ form.message.errors }}
      &lt;label for="{{ form.message.id_for_label }}"&gt;Your message:&lt;/label&gt;
      {{ form.message }}
  &lt;/div&gt;
  &lt;div class="fieldWrapper"&gt;
   &lt;strong&gt;{{ form.mail.errors }}&lt;/strong&gt;
      
      &lt;label for="{{ form.mail.id_for_label }}"&gt;Your email address:&lt;/label&gt;
      {{ form.mail }}
  &lt;/div&gt;
  &lt;div class="fieldWrapper"&gt;
      {{ form.number.errors }}
      &lt;label for="{{ form.number.id_for_label }}"&gt;CC yourself?&lt;/label&gt;
      {{ form.number }}
  &lt;/div&gt;
  
  
  
    &lt;button type="submit" class="btn btn-primary"&gt;Submit&lt;/button&gt;
   &lt;/form&gt;</code></pre>
  </div>
  </div>
  </p>
  
  <p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
  <div class="snippet-code">
  <pre class="snippet-code-html lang-html prettyprint-override"><code>class ContactForm(forms.Form):
   mail    = forms.CharField(required=False, label=_('Mail'))
   number  = forms.CharField(required=False, label=_('Number'))
   message = forms.CharField(min_length = 0, max_length=500, label=_('Message'))
  
   def clean_mail(self):
    mail = self.cleaned_data['mail']
    
    if '@' not in mail:
     raise ValidationError({"mail": _('The mail should contain "@"')})
  
    return mail</code></pre>
  </div>
  </div>
  </p>