forms.py:
from django.forms.util import ErrorList,ErrorDict, mark_safe, conditional_escape, force_unicode
class DivErrorDict(ErrorDict):
def __unicode__(self):
return self.as_divs()
def as_divs(self):
if not self: return u''
return mark_safe(u'%s'
% ''.join([u'%s%s' % (k, conditional_escape(force_unicode(v)))
for k, v in self.items()]))
class DivErrorList(ErrorList):
def __unicode__(self):
return self.as_divs()
def as_divs(self):
if not self: return u''
return mark_safe(u'%s' % ''.join([u'%s' % e for e in self]))
class MyForm(forms.ModelForm):
def full_clean(self):
self._errors = DivErrorDict()
if not self.is_bound: # Stop further processing.
return
self.cleaned_data = {}
# If the form is permitted to be empty, and none of the form data has
# changed from the initial data, short circuit any validation.
if self.empty_permitted and not self.has_changed():
return
self._clean_fields()
self._clean_form()
self._post_clean()
if self._errors:
del self.cleaned_data
В MyForm главное self._errors = DivErrorDict()По умолчанию было ErrorDict, в котором были ul. Глянешь исходный код ErrorDict и поймёшь.Форму из модели создал: class MyForm(forms.ModelForm):У тебя может быть и MyForm(forms.Form):views.py
from forms import MyForm, DivErrorList
Если обычные FBV:
form = MyForm(error_class = DivErrorList)
Если CBV:
class MyFormView(FormView):
form_class = MyForm
def get_form_kwargs(self):
kwargs = super(MyFormView, self).get_form_kwargs()
kwargs.update({
'error_class': DivErrorList
})
return kwargs
Проверил. работает.
Updated 20 Sept. 2012, 4:12 by Antonio.