Change Log


Built-in csrf support

Fully generated forms from the uni_form tag now have Django 1.2+’s support for csrf built-in.

Field labels now with safe filter

This release renders django.form.field labels with the ‘safe‘ filter. If you have user generated form field labels you should take this into consideration.

On the rare occasions this a problem, just create a uni_form directory in your templates directory, copy uni_form/templates/uni_form/field.html there, and remove the ‘safe‘ filter.

errorMsg div now outside the fieldset

This release lays out the HTML for the uni_form tag differently than previous versions. The errorMsg div is now outside the fieldset as it should be.

uni_form_tags has been split into two files

Because uni_form_tags got so big it was broken up into two files, uni_form_tags and uni_form_filters. In order to support backwards compatibility, uni_form_tags imports all the functions of uni_form_filters, so existing projects won’t be affected.

Removed {% uni_form_jquery %} tag

This was always somewhat problematic to get working. Static media should not be obfuscated via code and while this tag seemed helpful in practice it caused more headaches then what it was worth.

Elevated Miguel Araujo to project lead

This project has needed a much more active project lead for some time. Miguel Araujo shares my passion for good form generation and has a very deep understanding of python, django, and HTML. Also, his decisions on everything about this project either matches my own thoughts or he’s been able to easily convince me why his concepts are sound.


  • Elevated Miguel Araujo to project lead!
  • Based on @issackelly’s and @johnthedebs’s work a template called betterform has been added for supporting @carljm’s form-utils BetterForms.
  • FormHelper’s method get_attr has been renamed to get_attributes
  • uni_form_tags has been split into two different files: uni_form_tags and uni_form_filters.
  • Removing i18n tags from the templates, as they are not necessary anymore.
  • Removed all the internationalized hardcoded text, in favor of template variables: form_error_title and formset_error_title, bot can be set as helper’s attributes.
  • as_uni_errors filter can now render formset’s non_form_errors uni-form way.
  • Moved setup filter to use STATIC_URL instead of MEDIA_URL
  • Added the possibility to specify a helper for formsets too.
  • Renamed media directory to static, to be compatible with Django 1.3 staticfiles.
  • Added a form_style Helper attribute for setting global style of a form: inline or default.
  • Turning HTML into a context aware field, having form as a context variable and working as a Django template.
  • Turning Layout and Fieldset fields into lists, so that they can be changed dynamically.
  • Changing formHints from paragraphs to divs, so ul or ol can be placed within.
  • Removing slugify filter from form ids, so they can be set as user’s preferences.
  • Added CSS class ‘asteriskField’ for asterisks. Added CSS class ‘fieldRequired’ for required input labels.
  • FAIL_SILENTLY setting has been added for making django-uni-form log errors and fail silently, based on Adam Cupiał’s work.
  • Several bug fixes in MultiField.
  • Added unicode support for layout field names and improved error handling.
  • Refactored testing system and raised testing coverage.
  • Clean part of the code base and comments. All old CSRF code for supporting old versions of Django has been removed.
  • Refactored BasicNode for better readability and reducing lines of code.
  • Added formsets support based on Victor Nagy’s (nagyv) and Antti Kaihola’s (akahiola) work.
  • Bug fix in {% uni_form %} tag that didn’t work without a helper and it was meant to be optional.
  • CSS classes can be set in Submit buttons.
  • Thanks to J. Javier Maestro (jjmaestro) now we can set ids and classes for Fieldset, MultiField, Row and Column.
  • Thanks to Richard Marko (sorki) changed CSS class of PasswordInput widget.
  • Removing Toggle class as it wasn’t being used anywhere.
  • Moved BaseInput to helpers and removed file.
  • Removed {% uni_form_jquery %} tag
  • Removed namify function from tags, as It wasn’t being used anywhere.
  • Improved internal documentation
  • form methods generated by FormHelper are in lowercase (
  • Thanks to Nagy Viktor added form_tag attribute to FormHelper. Now you can use the uni_form tag without the leading and trailing form tags.
  • Thanks for Alison Rowland for giving django-uni-form sphinx docs
  • Incorporated uni-form 1.4 by Dragan Babic
  • Provide better adherence to uni-form specification of error messages
  • mirumee provided some great work for making FormHelper more subclassable.
  • django-uni-form 0.8 and higher lays out the HTML for the uni_form tag differently. The errorMsg div is now outside the fieldset as it should be.
  • Thanks to Casper S. Jensen django-uni-form now supports 1.2 style csrf_token.
  • csrf_token does not break earlier versions of Django. This will change when no version of django does not support csrf_token.
  • Thanks to j0hnsmith changed {{ error }} to {{ error|safe }} so that html (eg links) can be added to error messages.
  • Thanks to j0hnsmith changed {{ field.label }} to {{ field.label|safe }} so that html (eg links) can be added to field labels
  • Kudos to Stepan Rakhimov fixed an admin datetime issue.
  • Thanks to patrys (Patryk Zawadzki) FormHelper class is now easily subclass-able.
  • Sorki (Richard Marko) made it so things work better in direct_to_template.


Calling the template tags library

Release 0.7 and higher breaks backwards compatibility with previous versions of django-uni-form . All you have to do is update templates that call on the django-uni-form template tag from:

{% load uni_form %}


{% load uni_form_tags %}


  • Removed a <hr /> from the layout module.
  • Changed templatetags/ to templatetags/ Yes, this breaks backwards compatibility but fixes a namespace problems in Django with naming a templatetag library after the parent application.
  • Changed form_action attribute to accept not just named URLs but also any old URL.
  • Added in uni_form_setup tag.
  • Added tests
  • Added several new contributors including Dragan Babic
  • Added Danish language translation