[1.2.X] Fixed #8325 -- Reorganization and expansion of the login_required decorator docs to make it clearer how the redirect_field_name parameter works and improve the overall flow of the text. Thanks to Robert Reeves for the report.
Backport of [14480] from trunk (sans 1.3-specific changes). git-svn-id: http://code.djangoproject.com/svn/django/branches/releases/1.2.X@14481 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
d8e0052d45
commit
2946a657cd
|
@ -693,7 +693,7 @@ login page::
|
|||
The login_required decorator
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. function:: decorators.login_required()
|
||||
.. function:: decorators.login_required([redirect_field_name=REDIRECT_FIELD_NAME])
|
||||
|
||||
As a shortcut, you can use the convenient
|
||||
:func:`~django.contrib.auth.decorators.login_required` decorator::
|
||||
|
@ -703,35 +703,38 @@ The login_required decorator
|
|||
@login_required
|
||||
def my_view(request):
|
||||
...
|
||||
|
||||
:func:`~django.contrib.auth.decorators.login_required` does the following:
|
||||
|
||||
:func:`~django.contrib.auth.decorators.login_required` also takes an
|
||||
optional ``redirect_field_name`` parameter. Example::
|
||||
* If the user isn't logged in, redirect to
|
||||
:setting:`settings.LOGIN_URL <LOGIN_URL>`, passing the current absolute
|
||||
path in the query string. Example: ``/accounts/login/?next=/polls/3/``.
|
||||
|
||||
* If the user is logged in, execute the view normally. The view code is
|
||||
free to assume the user is logged in.
|
||||
|
||||
By default, the path that the user should be redirected to upon
|
||||
successful authentication is stored in a query string parameter called
|
||||
``"next"``. If you would prefer to use a different name for this parameter,
|
||||
:func:`~django.contrib.auth.decorators.login_required` takes an
|
||||
optional ``redirect_field_name`` parameter::
|
||||
|
||||
from django.contrib.auth.decorators import login_required
|
||||
|
||||
@login_required(redirect_field_name='redirect_to')
|
||||
@login_required(redirect_field_name='my_redirect_field')
|
||||
def my_view(request):
|
||||
...
|
||||
|
||||
:func:`~django.contrib.auth.decorators.login_required` does the following:
|
||||
If you provide a value to ``redirect_field_name``, you will most
|
||||
likely need to customize your login template as well, since the template
|
||||
context variable which stores the redirect path will use the value of
|
||||
``redirect_field_name`` as it's key rather than ``"next"`` (the default).
|
||||
|
||||
* If the user isn't logged in, redirect to
|
||||
:setting:`settings.LOGIN_URL <LOGIN_URL>` (``/accounts/login/`` by
|
||||
default), passing the current absolute URL in the query string. The
|
||||
name of the GET argument is determined by the ``redirect_field_name``
|
||||
argument provided to the decorator. The default argument name is
|
||||
``next``. For example:
|
||||
``/accounts/login/?next=/polls/3/``.
|
||||
Note that you'll need to map the appropriate Django view to
|
||||
:setting:`settings.LOGIN_URL <LOGIN_URL>`. For example, using the defaults,
|
||||
add the following line to your URLconf::
|
||||
|
||||
* If the user is logged in, execute the view normally. The view code is
|
||||
free to assume the user is logged in.
|
||||
|
||||
Note that you'll need to map the appropriate Django view to
|
||||
:setting:`settings.LOGIN_URL <LOGIN_URL>`. For example, using the defaults, add
|
||||
the following line to your URLconf::
|
||||
|
||||
(r'^accounts/login/$', 'django.contrib.auth.views.login'),
|
||||
(r'^accounts/login/$', 'django.contrib.auth.views.login'),
|
||||
|
||||
.. function:: views.login(request, [template_name, redirect_field_name, authentication_form])
|
||||
|
||||
|
|
Loading…
Reference in New Issue