Making a complex customized Django form template? Remember to include form.non_field_errors!

This drove me crazy for about 30 minutes.

If you’re making a heavily customized form template with Django, the newforms documentation suggests this format:

But, if you do any sort of non-field specific (form-level) validation, those validation messages won’t be returned to the user. So, instead of seeing a message like, “Both password fields must match,” the form just reloads without a explanation, confusing our poor end-users (and me for about 30 minutes)!

A quick #django IRC session later and I had the answer: form.non_field_errors

This did the trick for me:

I’m no professional developer, but a lack of Google search results for this matter inspired me to make a quick post and tag it well so future Django form template customizers don’t pull their hair out.

(Sorry to post the code as images, but [hosted] WordPress doesn’t escape HTML enclosed in code blocks! Ridiculous.)

This entry was posted in internets, tech and tagged , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , . Bookmark the permalink.

13 Responses to Making a complex customized Django form template? Remember to include form.non_field_errors!

  1. Julius says:

    I didn’t even know IRC was still around. Nice.

  2. narutoindisguise says:

    Thats awesome, I never knew it before untill today. Great job. 🙂

  3. Tyler Bye says:

    Bit by this just this morning. Appreciate the post. I’m using Form Wizard and a custom layout to accomplish some mid wizard ajax validation. This post hit the spot on the form validation errors I was hitting.


  4. Aral Balkan says:

    Thanks for posting this, it helped me out 🙂

  5. Guido GarcĂ­a says:
  6. das says:

    this helped alot thanks

  7. Dmitri says:

    I am new to django .
    my form renders as html code


    It does not display the actual text box .

    Please assist .

  8. lgespee says:

    Thanks for the great tip. I couldn’t find this anywhere in Django’s documentation.

    There is however a strange thing going on, form.non_field_errors.as_ul does add the tags (I am using Django 1.0). I used a workaround by iterating manually through the non_field_errors.

  9. Adam says:

    Thanks so much!
    I was halfway through making a custom form and view and all sorts of mess to try and get at the __all__ errors field that the template system won’t show but contained the all-important “invalid username/password” error. Luckily your post (and shortly, a git reset) saved the day!

  10. ted says:


  11. EconJohn says:

    You are my hero!! Without this post I would have been banging my head against the wall all day!

  12. Paul Eastlund says:

    Thanks! Just ran into the exact same issue — this was very helpful!

  13. Cyril Pauya says:

    Thanks! This solved my problem.

Leave a Reply to Adam Cancel reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s