mirror of
https://github.com/django/django.git
synced 2025-11-02 04:48:33 +00:00
Fixed #811 -- Added support for IPv6 to forms and model fields. Many thanks to Erik Romijn.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@16366 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
87571cdb37
commit
ce3c281090
23 changed files with 708 additions and 5 deletions
|
|
@ -622,6 +622,45 @@ Takes two optional arguments for validation:
|
|||
expression.
|
||||
* Error message keys: ``required``, ``invalid``
|
||||
|
||||
``GenericIPAddressField``
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. class:: GenericIPAddressField(**kwargs)
|
||||
|
||||
.. versionadded:: 1.4
|
||||
|
||||
A field containing either an IPv4 or an IPv6 address.
|
||||
|
||||
* Default widget: ``TextInput``
|
||||
* Empty value: ``''`` (an empty string)
|
||||
* Normalizes to: A Unicode object. IPv6 addresses are
|
||||
normalized as described below.
|
||||
* Validates that the given value is a valid IP address.
|
||||
* Error message keys: ``required``, ``invalid``
|
||||
|
||||
The IPv6 address normalization follows `RFC4291 section 2.2`_, including using
|
||||
the IPv4 format suggested in paragraph 3 of that section, like
|
||||
``::ffff:192.0.2.0``. For example, ``2001:0::0:01`` would be normalized to
|
||||
``2001::1``, and ``::ffff:0a0a:0a0a`` to ``::ffff:10.10.10.10``. All
|
||||
characters are converted to lowercase.
|
||||
|
||||
.. _RFC4291 section 2.2: http://tools.ietf.org/html/rfc4291#section-2.2
|
||||
|
||||
Takes two optional arguments:
|
||||
|
||||
.. attribute:: GenericIPAddressField.protocol
|
||||
|
||||
Limits valid inputs to the specified protocol.
|
||||
Accepted values are ``both`` (default), ``IPv4``
|
||||
or ``IPv6``. Matching is case insensitive.
|
||||
|
||||
.. attribute:: GenericIPAddressField.unpack_ipv4
|
||||
|
||||
Unpacks IPv4 mapped addresses like ``::ffff::192.0.2.1``.
|
||||
If this option is enabled that address would be unpacked to
|
||||
``192.0.2.1``. Default is disabled. Can only be used
|
||||
when ``protocol`` is set to ``'both'``.
|
||||
|
||||
``MultipleChoiceField``
|
||||
~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
|
|
|
|||
|
|
@ -760,6 +760,38 @@ single-line input).
|
|||
An IP address, in string format (e.g. "192.0.2.30"). The admin represents this
|
||||
as an ``<input type="text">`` (a single-line input).
|
||||
|
||||
``GenericIPAddressField``
|
||||
-------------------------
|
||||
|
||||
.. class:: GenericIPAddressField([protocols=both, unpack_ipv4=False, **options])
|
||||
|
||||
.. versionadded:: 1.4
|
||||
|
||||
An IPv4 or IPv6 address, in string format (e.g. ``192.0.2.30`` or
|
||||
``2a02:42fe::4``). The admin represents this as an ``<input type="text">``
|
||||
(a single-line input).
|
||||
|
||||
The IPv6 address normalization follows `RFC4291 section 2.2`_, including using
|
||||
the IPv4 format suggested in paragraph 3 of that section, like
|
||||
``::ffff:192.0.2.0``. For example, ``2001:0::0:01`` would be normalized to
|
||||
``2001::1``, and ``::ffff:0a0a:0a0a`` to ``::ffff:10.10.10.10``. All
|
||||
characters are converted to lowercase.
|
||||
|
||||
.. _RFC4291 section 2.2: http://tools.ietf.org/html/rfc4291#section-2.2
|
||||
|
||||
.. attribute:: GenericIPAddressField.protocol
|
||||
|
||||
Limits valid inputs to the specified protocol.
|
||||
Accepted values are ``'both'`` (default), ``'IPv4'``
|
||||
or ``'IPv6'``. Matching is case insensitive.
|
||||
|
||||
.. attribute:: GenericIPAddressField.unpack_ipv4
|
||||
|
||||
Unpacks IPv4 mapped addresses like ``::ffff::192.0.2.1``.
|
||||
If this option is enabled that address would be unpacked to
|
||||
``192.0.2.1``. Default is disabled. Can only be used
|
||||
when ``protocol`` is set to ``'both'``.
|
||||
|
||||
``NullBooleanField``
|
||||
--------------------
|
||||
|
||||
|
|
|
|||
|
|
@ -130,6 +130,23 @@ to, or in lieu of custom ``field.clean()`` methods.
|
|||
A :class:`RegexValidator` instance that ensures a value looks like an IPv4
|
||||
address.
|
||||
|
||||
``validate_ipv6_address``
|
||||
-------------------------
|
||||
.. versionadded:: 1.4
|
||||
|
||||
.. data:: validate_ipv6_address
|
||||
|
||||
Uses :mod:`django.utils.ipv6` to check the validity of an IPv6 address.
|
||||
|
||||
``validate_ipv46_address``
|
||||
--------------------------
|
||||
.. versionadded:: 1.4
|
||||
|
||||
.. data:: validate_ipv46_address
|
||||
|
||||
Uses both ``validate_ipv4_address`` and ``validate_ipv6_address`` to
|
||||
ensure a value is either a valid IPv4 or IPv6 address.
|
||||
|
||||
``validate_comma_separated_integer_list``
|
||||
-----------------------------------------
|
||||
.. data:: validate_comma_separated_integer_list
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue