Есть ли способ придать форме специальную функцию отрисовки ошибок в определении формы? В документации по customizing-the-error-list-format показано, как вы можете придать форме специальную функцию рендеринга ошибок, но кажется, что вы должны объявить ее при создании экземпляра формы, а не Вы определяете это.
Таким образом, вы можете определить некоторый класс ErrorList, например:
from django.forms.util import ErrorList
class DivErrorList(ErrorList):
def __unicode__(self):
return self.as_divs()
def as_divs(self):
if not self: return u''
return u'<div class="errorlist">%s</div>' % ''.join([u'<div class="error">%s</div>' % e for e in self])
И затем, когда вы создаете экземпляр своей формы, вы можете создать ее с помощью этого error_class:
f = ContactForm(data, auto_id=False, error_class=DivErrorList)
f.as_p()
<div class="errorlist"><div class="error">This field is required.</div></div>
<p>Subject: <input type="text" name="subject" maxlength="100" /></p>
<p>Message: <input type="text" name="message" value="Hi there" /></p>
<div class="errorlist"><div class="error">Enter a valid e-mail address.</div></div>
<p>Sender: <input type="text" name="sender" value="invalid e-mail address" /></p>
<p>Cc myself: <input checked="checked" type="checkbox" name="cc_myself" /></p>
Но я не хочу называть класс ошибок каждый раз, когда создаю экземпляр формы, есть ли способ просто определить пользовательский обработчик ошибок внутри определения формы?