Есть ли встроенный шаблон входа в Django?
Я хочу, чтобы пользователь вошел в систему перед просмотром страниц. Есть ли встроенный шаблон для входа пользователя, так что мне не нужно писать свою собственную страницу входа?
5 ответов:
да. Вы можете прочитать все об этом здесь: https://docs.djangoproject.com/en/1.8/topics/auth/default/#django.contrib.auth.decorators.login_required ... но вот некоторые пункты маркированного списка:
- добавить
'django.contrib.auth.middleware.AuthenticationMiddleware'
toMIDDLEWARE_CLASSES
наsettings.py
- добавить
'django.contrib.auth
и'django.contrib.contenttypes'
доINSTALLED_APPS
наsettings.py
- настройка URL для входа с помощью
django.contrib.auth.views.login
для вида, напримерurl(r'^login/$', 'django.contrib.auth.views.login',name="my_login")
- на ваш взгляд, включать login_required декоратор и добавить его перед вашим видом. Например...
views.py...
from django.contrib.auth.decorators import login_required @login_required def home(request): return HttpResponse('Home Page')
по умолчанию вы помещаете шаблон внутрь
my_template_directory/registration/login.html
. Дополнительную информацию об этом шаблоне можно найти по ссылке в начале этого поста.
как уже упоминалось в комментариях автора, самый простой способ сделать это-добавить следующие строки в
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), )
насколько я знаю, добавлять
r'^accounts/$'
иr'^accounts/profile/$'
URL-адреса не требуется, если не требуется управление профилем пользователя.как предложил @mmatt в комментариях, set
LOGIN_REDIRECT_URL = '/'
наsettings.py
чтобы избежать перенаправления по умолчанию/accounts/profile/
после входа в систему. Смотрите LOGIN_REDIRECT_URL в настройках Django документация.это также должно работать в Django 2.x с помощью
path
вместоurl
надлежащим образом.
самый upvoted response by @brant технически неверно. Django предоставляет представления по умолчанию для обработки функциональности входа, но за документация не дает шаблон:
Django не предоставляет шаблон по умолчанию для представлений аутентификации. Вы должны создать свои собственные шаблоны для представлений, которые вы хотите использовать. Контекст шаблона задокументирован в каждом представлении, см. Все представления проверки подлинности.
Если вы хотите взять быстрый маршрут, чтобы встать и работать я рекомендую использовать URLConf при условии.
например:
urlpatterns = [ url('^', include('django.contrib.auth.urls')) ]
смотрите дополнительную информацию в документации django: https://docs.djangoproject.com/en/1.8/topics/auth/default/#module-django.contrib.auth.views
подобно ответу mrts, в более позднем Django вы можете использовать LoginView. Вы можете дополнительно настроить шаблон, установив контекст шаблона, например
title
,site_title
etc. как используется в admin / base.HTML-код так что это не похоже на логин admin.from django.contrib.auth.views import LoginView urlpatterns = [ url( r'^accounts/login/$', LoginView.as_view( template_name='admin/login.html', extra_context={ 'title': 'Login', 'site_title': 'My Site', 'site_header': 'My Site Login'}, name='login'), ]