login(request, template_name=`registration/login.html`, redirect_field_name='next', authentication_form=AuthenticationForm, current_app=None, extra_context=None, redirect_authenticated_user=False)
URL name: login
See the URL documentation for details on using named URL patterns.
Optional arguments:
-
template_name
: The name of a template to display for the view used to log the user in. Defaults toregistration/login.html
. -
redirect_field_name
: The name of aGET
field containing the URL to redirect to after login. Defaults tonext
. -
authentication_form
: A callable (typically just a form class) to use for authentication. Defaults toAuthenticationForm
. -
current_app
: A hint indicating which application contains the current view. See the namespaced URL resolution strategy for more information. -
extra_context
: A dictionary of context data that will be added to the default context data passed to the template. -
redirect_authenticated_user
: A boolean that controls whether or not authenticated users accessing the login page will be redirected as if they had just successfully logged in. Defaults toFalse
.
Deprecated since version 1.9: The current_app
parameter is deprecated and will be removed in Django 2.0. Callers should set request.current_app
instead.
The redirect_authenticated_user
parameter was added.
Here’s what django.contrib.auth.views.login
does:
- If called via
GET
, it displays a login form that POSTs to the same URL. More on this in a bit. - If called via
POST
with user submitted credentials, it tries to log the user in. If login is successful, the view redirects to the URL specified innext
. Ifnext
isn’t provided, it redirects tosettings.LOGIN_REDIRECT_URL
(which defaults to/accounts/profile/
). If login isn’t successful, it redisplays the login form.
It’s your responsibility to provide the html for the login template , called registration/login.html
by default. This template gets passed four template context variables:
-
form
: AForm
object representing theAuthenticationForm
. -
next
: The URL to redirect to after successful login. This may contain a query string, too. -
site
: The currentSite
, according to theSITE_ID
setting. If you don’t have the site framework installed, this will be set to an instance ofRequestSite
, which derives the site name and domain from the currentHttpRequest
. -
site_name
: An alias forsite.name
. If you don’t have the site framework installed, this will be set to the value ofrequest.META['SERVER_NAME']
. For more on sites, see The “sites” framework.
If you’d prefer not to call the template registration/login.html
, you can pass the template_name
parameter via the extra arguments to the view in your URLconf. For example, this URLconf line would use myapp/login.html
instead:
url(r'^accounts/login/$', auth_views.login, {'template_name': 'myapp/login.html'}),
You can also specify the name of the GET
field which contains the URL to redirect to after login by passing redirect_field_name
to the view. By default, the field is called next
.
Here’s a sample registration/login.html
template you can use as a starting point. It assumes you have a base.html
template that defines a content
block:
{% extends "base.html" %} {% block content %} {% if form.errors %} <p>Your username and password didn't match. Please try again.</p> {% endif %} {% if next %} {% if user.is_authenticated %} <p>Your account doesn't have access to this page. To proceed, please login with an account that has access.</p> {% else %} <p>Please login to see this page.</p> {% endif %} {% endif %} <form method="post" action="{% url 'login' %}"> {% csrf_token %} <table> <tr> <td>{{ form.username.label_tag }}</td> <td>{{ form.username }}</td> </tr> <tr> <td>{{ form.password.label_tag }}</td> <td>{{ form.password }}</td> </tr> </table> <input type="submit" value="login" /> <input type="hidden" name="next" value="{{ next }}" /> </form> {# Assumes you setup the password_reset view in your URLconf #} <p><a href="{% url 'password_reset' %}">Lost password?</a></p> {% endblock %}
If you have customized authentication (see Customizing Authentication) you can pass a custom authentication form to the login view via the authentication_form
parameter. This form must accept a request
keyword argument in its __init__
method, and provide a get_user()
method which returns the authenticated user object (this method is only ever called after successful form validation).
Please login to continue.