Fixed #1466 -- Added newforms USZipCodeField
git-svn-id: http://code.djangoproject.com/svn/django/trunk@4519 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
174cef7361
commit
2ec2bf6989
|
@ -0,0 +1,13 @@
|
||||||
|
"""
|
||||||
|
USA-specific Form helpers
|
||||||
|
"""
|
||||||
|
|
||||||
|
from django.newforms.fields import RegexField
|
||||||
|
from django.utils.translation import gettext
|
||||||
|
|
||||||
|
class USZipCodeField(RegexField):
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
super(USZipCodeField, self).__init__(r'^\d{5}(?:-\d{4})?$',
|
||||||
|
max_length=None, min_length=None,
|
||||||
|
error_message=gettext(u'Enter a zip code in the format XXXXX or XXXXX-XXXX.'),
|
||||||
|
*args, **kwargs)
|
|
@ -3055,12 +3055,12 @@ the list of errors is empty). You can also use it in {% if %} statements.
|
||||||
<input type="submit" />
|
<input type="submit" />
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
#################
|
###############
|
||||||
# Extra widgets #
|
# Extra stuff #
|
||||||
#################
|
###############
|
||||||
|
|
||||||
The newforms library comes with some extra, higher-level Widget classes that
|
The newforms library comes with some extra, higher-level Field and Widget
|
||||||
demonstrate some of the library's abilities.
|
classes that demonstrate some of the library's abilities.
|
||||||
|
|
||||||
# SelectDateWidget ############################################################
|
# SelectDateWidget ############################################################
|
||||||
|
|
||||||
|
@ -3189,6 +3189,66 @@ True
|
||||||
<option value="2016">2016</option>
|
<option value="2016">2016</option>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
# USZipCodeField ##############################################################
|
||||||
|
|
||||||
|
USZipCodeField validates that the data is either a five-digit U.S. zip code or
|
||||||
|
a zip+4.
|
||||||
|
>>> from django.newforms.extras.usa import USZipCodeField
|
||||||
|
>>> f = USZipCodeField()
|
||||||
|
>>> f.clean('60606')
|
||||||
|
u'60606'
|
||||||
|
>>> f.clean(60606)
|
||||||
|
u'60606'
|
||||||
|
>>> f.clean('04000')
|
||||||
|
u'04000'
|
||||||
|
>>> f.clean('4000')
|
||||||
|
Traceback (most recent call last):
|
||||||
|
...
|
||||||
|
ValidationError: [u'Enter a zip code in the format XXXXX or XXXXX-XXXX.']
|
||||||
|
>>> f.clean('60606-1234')
|
||||||
|
u'60606-1234'
|
||||||
|
>>> f.clean('6060-1234')
|
||||||
|
Traceback (most recent call last):
|
||||||
|
...
|
||||||
|
ValidationError: [u'Enter a zip code in the format XXXXX or XXXXX-XXXX.']
|
||||||
|
>>> f.clean('60606-')
|
||||||
|
Traceback (most recent call last):
|
||||||
|
...
|
||||||
|
ValidationError: [u'Enter a zip code in the format XXXXX or XXXXX-XXXX.']
|
||||||
|
>>> f.clean(None)
|
||||||
|
Traceback (most recent call last):
|
||||||
|
...
|
||||||
|
ValidationError: [u'This field is required.']
|
||||||
|
>>> f.clean('')
|
||||||
|
Traceback (most recent call last):
|
||||||
|
...
|
||||||
|
ValidationError: [u'This field is required.']
|
||||||
|
|
||||||
|
>>> f = USZipCodeField(required=False)
|
||||||
|
>>> f.clean('60606')
|
||||||
|
u'60606'
|
||||||
|
>>> f.clean(60606)
|
||||||
|
u'60606'
|
||||||
|
>>> f.clean('04000')
|
||||||
|
u'04000'
|
||||||
|
>>> f.clean('4000')
|
||||||
|
Traceback (most recent call last):
|
||||||
|
...
|
||||||
|
ValidationError: [u'Enter a zip code in the format XXXXX or XXXXX-XXXX.']
|
||||||
|
>>> f.clean('60606-1234')
|
||||||
|
u'60606-1234'
|
||||||
|
>>> f.clean('6060-1234')
|
||||||
|
Traceback (most recent call last):
|
||||||
|
...
|
||||||
|
ValidationError: [u'Enter a zip code in the format XXXXX or XXXXX-XXXX.']
|
||||||
|
>>> f.clean('60606-')
|
||||||
|
Traceback (most recent call last):
|
||||||
|
...
|
||||||
|
ValidationError: [u'Enter a zip code in the format XXXXX or XXXXX-XXXX.']
|
||||||
|
>>> f.clean(None)
|
||||||
|
u''
|
||||||
|
>>> f.clean('')
|
||||||
|
u''
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|
Loading…
Reference in New Issue