diff options
Diffstat (limited to 'docs/ref')
| -rw-r--r-- | docs/ref/contrib/auth.txt | 50 |
1 files changed, 49 insertions, 1 deletions
diff --git a/docs/ref/contrib/auth.txt b/docs/ref/contrib/auth.txt index 6e3b8892cf..5836cb329e 100644 --- a/docs/ref/contrib/auth.txt +++ b/docs/ref/contrib/auth.txt @@ -32,6 +32,15 @@ Fields ``max_length=191`` because MySQL can only create unique indexes with 191 characters in that case by default. + .. admonition:: Usernames and Unicode + + Django originally accepted only ASCII letters in usernames. + Although it wasn't a deliberate choice, Unicode characters have + always been accepted when using Python 3. Django 1.10 officially + added Unicode support in usernames, keeping the ASCII-only behavior + on Python 2, with the option to customize the behavior using + :attr:`.User.username_validator`. + .. versionchanged:: 1.10 The ``max_length`` increased from 30 to 150 characters. @@ -146,6 +155,27 @@ Attributes In older versions, this was a method. Backwards-compatibility support for using it as a method will be removed in Django 2.0. + .. attribute:: username_validator + + .. versionadded:: 1.10 + + Points to a validator instance used to validate usernames. Defaults to + :class:`validators.UnicodeUsernameValidator` on Python 3 and + :class:`validators.ASCIIUsernameValidator` on Python 2. + + To change the default username validator, you can subclass the ``User`` + model and set this attribute to a different validator instance. For + example, to use ASCII usernames on Python 3:: + + from django.contrib.auth.models import User + from django.contrib.auth.validators import ASCIIUsernameValidator + + class CustomUser(User): + username_validator = ASCIIUsernameValidator() + + class Meta: + proxy = True # If no new field is added. + Methods ------- @@ -285,7 +315,6 @@ Manager methods Same as :meth:`create_user`, but sets :attr:`~models.User.is_staff` and :attr:`~models.User.is_superuser` to ``True``. - ``AnonymousUser`` object ======================== @@ -378,6 +407,25 @@ Fields group.permissions.remove(permission, permission, ...) group.permissions.clear() +Validators +========== + +.. class:: validators.ASCIIUsernameValidator + + .. versionadded:: 1.10 + + A field validator allowing only ASCII letters, in addition to ``@``, ``.``, + ``+``, ``-``, and ``_``. The default validator for ``User.username`` on + Python 2. + +.. class:: validators.UnicodeUsernameValidator + + .. versionadded:: 1.10 + + A field validator allowing Unicode letters, in addition to ``@``, ``.``, + ``+``, ``-``, and ``_``. The default validator for ``User.username`` on + Python 3. + .. _topics-auth-signals: Login and logout signals |
