Changeset 6142
- Timestamp:
- 09/13/07 18:09:40 (1 year ago)
- Files:
-
- django/trunk/django/newforms/forms.py (modified) (5 diffs)
- django/trunk/docs/newforms.txt (modified) (1 diff)
- django/trunk/tests/regressiontests/forms/tests.py (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
django/trunk/django/newforms/forms.py
r5819 r6142 58 58 # information. Any improvements to the form API should be made to *this* 59 59 # class, not to the Form class. 60 def __init__(self, data=None, files=None, auto_id='id_%s', prefix=None, initial=None): 60 def __init__(self, data=None, files=None, auto_id='id_%s', prefix=None, 61 initial=None, error_class=ErrorList): 61 62 self.is_bound = data is not None or files is not None 62 63 self.data = data or {} … … 65 66 self.prefix = prefix 66 67 self.initial = initial or {} 68 self.error_class = error_class 67 69 self._errors = None # Stores the errors after clean() has been called. 68 70 … … 118 120 for name, field in self.fields.items(): 119 121 bf = BoundField(self, field, name) 120 bf_errors = ErrorList([escape(error) for error in bf.errors]) # Escape and cache in local variable.122 bf_errors = self.error_class([escape(error) for error in bf.errors]) # Escape and cache in local variable. 121 123 if bf.is_hidden: 122 124 if bf_errors: … … 169 171 are none. 170 172 """ 171 return self.errors.get(NON_FIELD_ERRORS, ErrorList())173 return self.errors.get(NON_FIELD_ERRORS, self.error_class()) 172 174 173 175 def full_clean(self): … … 242 244 if there are none. 243 245 """ 244 return self.form.errors.get(self.name, ErrorList())246 return self.form.errors.get(self.name, self.form.error_class()) 245 247 errors = property(_errors) 246 248 django/trunk/docs/newforms.txt
r6124 r6142 552 552 <p>Message: <input type="text" name="message" value="Hi there" /></p> 553 553 <p><ul class="errorlist"><li>Enter a valid e-mail address.</li></ul></p> 554 <p>Sender: <input type="text" name="sender" value="invalid e-mail address" /></p> 555 <p>Cc myself: <input checked="checked" type="checkbox" name="cc_myself" /></p> 556 557 Customizing the error list format 558 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 559 560 By default, forms use ``django.newforms.util.ErrorList`` to format validation 561 errors. If you'd like to use an alternate class for displaying errors, you can 562 pass that in at construction time:: 563 564 >>> from django.newforms.util import ErrorList 565 >>> class DivErrorList(ErrorList): 566 ... def __unicode__(self): 567 ... return self.as_divs() 568 ... def as_divs(self): 569 ... if not self: return u'' 570 ... return u'<div class="errorlist">%s</div>' % ''.join([u'<div class="error">%s</div>' % e for e in self]) 571 >>> f = ContactForm(data, auto_id=False, error_class=DivErrorList) 572 >>> f.as_p() 573 <div class="errorlist"><div class="error">This field is required.</div></div> 574 <p>Subject: <input type="text" name="subject" maxlength="100" /></p> 575 <p>Message: <input type="text" name="message" value="Hi there" /></p> 576 <div class="errorlist"><div class="error">Enter a valid e-mail address.</div></div> 554 577 <p>Sender: <input type="text" name="sender" value="invalid e-mail address" /></p> 555 578 <p>Cc myself: <input checked="checked" type="checkbox" name="cc_myself" /></p> django/trunk/tests/regressiontests/forms/tests.py
r6067 r6142 3822 3822 >>> f.cleaned_data['username'] 3823 3823 u'sirrobin' 3824 3825 ####################################### 3826 # Test overriding ErrorList in a form # 3827 ####################################### 3828 3829 >>> from django.newforms.util import ErrorList 3830 >>> class DivErrorList(ErrorList): 3831 ... def __unicode__(self): 3832 ... return self.as_divs() 3833 ... def as_divs(self): 3834 ... if not self: return u'' 3835 ... return u'<div class="errorlist">%s</div>' % ''.join([u'<div class="error">%s</div>' % e for e in self]) 3836 >>> class CommentForm(Form): 3837 ... name = CharField(max_length=50, required=False) 3838 ... email = EmailField() 3839 ... comment = CharField() 3840 >>> data = dict(email='invalid') 3841 >>> f = CommentForm(data, auto_id=False, error_class=DivErrorList) 3842 >>> print f.as_p() 3843 <p>Name: <input type="text" name="name" maxlength="50" /></p> 3844 <div class="errorlist"><div class="error">Enter a valid e-mail address.</div></div> 3845 <p>Email: <input type="text" name="email" value="invalid" /></p> 3846 <div class="errorlist"><div class="error">This field is required.</div></div> 3847 <p>Comment: <input type="text" name="comment" /></p> 3848 3824 3849 """ 3825 3850
