Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

[1.2.X] Fixed #8325 -- Reorganization and expansion of the login_requ…

…ired 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
  • Loading branch information...
commit 2946a657cd339345dd2a6ba56045ba0a37b9995c 1 parent d8e0052
Gabriel Hurley authored
Showing with 23 additions and 20 deletions.
  1. +23 −20 docs/topics/auth.txt
43 docs/topics/auth.txt
View
@@ -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:
+
+ * 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/``.
- :func:`~django.contrib.auth.decorators.login_required` also takes an
- optional ``redirect_field_name`` parameter. Example::
+ * 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 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/``.
-
- * If the user is logged in, execute the view normally. The view code is
- free to assume the user is logged in.
+ 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).
-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::
+ 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])
Please sign in to comment.
Something went wrong with that request. Please try again.