Is there a built-in login template in Django?
Solution 1:
Yes. You can read all about it here: https://docs.djangoproject.com/en/1.8/topics/auth/default/#django.contrib.auth.decorators.login_required ... but here are some bullet points:
- add
'django.contrib.auth.middleware.AuthenticationMiddleware'
toMIDDLEWARE_CLASSES
insettings.py
- add
'django.contrib.auth
' and'django.contrib.contenttypes'
toINSTALLED_APPS
insettings.py
- setup a URL for the login using
django.contrib.auth.views.login
for the view, such asurl(r'^login/$', 'django.contrib.auth.views.login',name="my_login")
- In your view, include the login_required decorator and add it before your view. For example...
views.py...
from django.contrib.auth.decorators import login_required
@login_required
def home(request):
return HttpResponse('Home Page')
By default, you then put the template inside my_template_directory/registration/login.html
. Further info about that template can be found at the link in the beginning of this post.
Solution 2:
As mentioned in the comments by the author, the easiest way to do this is to add the following lines to urls.py
:
from django.contrib.auth.views import login, logout
urlpatterns = patterns('',
url(r'^accounts/login/$', login, {'template_name': 'admin/login.html'}),
url(r'^accounts/logout/$', logout),
)
As far as I know, adding the r'^accounts/$'
and r'^accounts/profile/$'
URLs is not necessary unless user profile management is required.
As suggested by @mmatt in comments, set LOGIN_REDIRECT_URL = '/'
in settings.py
to avoid the default redirect to /accounts/profile/
after login. See LOGIN_REDIRECT_URL in Django settings documentation.
This should also still work in Django 2.x using path
instead of url
appropriately.