[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
|
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
|
As a shortcut, you can use the convenient
|
||||||
:func:`~django.contrib.auth.decorators.login_required` decorator::
|
:func:`~django.contrib.auth.decorators.login_required` decorator::
|
||||||
|
@ -703,35 +703,38 @@ The login_required decorator
|
||||||
@login_required
|
@login_required
|
||||||
def my_view(request):
|
def my_view(request):
|
||||||
...
|
...
|
||||||
|
|
||||||
|
:func:`~django.contrib.auth.decorators.login_required` does the following:
|
||||||
|
|
||||||
:func:`~django.contrib.auth.decorators.login_required` also takes an
|
* If the user isn't logged in, redirect to
|
||||||
optional ``redirect_field_name`` parameter. Example::
|
: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
|
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):
|
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
|
Note that you'll need to map the appropriate Django view to
|
||||||
:setting:`settings.LOGIN_URL <LOGIN_URL>` (``/accounts/login/`` by
|
:setting:`settings.LOGIN_URL <LOGIN_URL>`. For example, using the defaults,
|
||||||
default), passing the current absolute URL in the query string. The
|
add the following line to your URLconf::
|
||||||
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/``.
|
|
||||||
|
|
||||||
* If the user is logged in, execute the view normally. The view code is
|
(r'^accounts/login/$', 'django.contrib.auth.views.login'),
|
||||||
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'),
|
|
||||||
|
|
||||||
.. function:: views.login(request, [template_name, redirect_field_name, authentication_form])
|
.. function:: views.login(request, [template_name, redirect_field_name, authentication_form])
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue