Я хочу, чтобы пользователь заходил перед просмотром страниц. Есть ли встроенный шаблон для входа пользователя, так что мне не нужно писать собственную страницу на странице?
Есть встроенный шаблон входа в Django?
Ответ 1
Да. Вы можете прочитать все об этом здесь: https://docs.djangoproject.com/en/1.8/topics/auth/default/#django.contrib.auth.decorators.login_required... но вот несколько пунктов:
- добавить
'django.contrib.auth.middleware.AuthenticationMiddleware'
вMIDDLEWARE_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
. Более подробную информацию об этом шаблоне можно найти по ссылке в начале этого сообщения.
Ответ 2
Как уже упоминалось в комментариях автора, самый простой способ сделать это - добавить следующие строки в 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),
)
Насколько я знаю, добавление URL r'^accounts/$'
и r'^accounts/profile/$'
не требуется, если не требуется управление профилем пользователя.
Как было предложено @mmatt в комментариях, установите LOGIN_REDIRECT_URL = '/'
в settings.py
, чтобы избежать перенаправления по умолчанию на /accounts/profile/
после входа в систему. См. LOGIN_REDIRECT_URL в документации по настройкам Django.
Ответ 3
Самый отложенный ответ от @brant технически неверен. Django предоставляет представления по умолчанию для обработки функций входа, но в документации не предоставляется шаблон:
Django не предоставляет шаблон по умолчанию для представлений аутентификации. Вы должны создать свои собственные шаблоны для тех видов, которые вы хотите использовать. Контекст шаблона документирован в каждом представлении, см. Все виды проверки подлинности.
Ответ 4
Если вы хотите быстро перейти к началу работы, я рекомендую использовать предоставленный URLConf.
например:
urlpatterns = [
url('^', include('django.contrib.auth.urls'))
]
Подробнее в документации django: https://docs.djangoproject.com/en/1.8/topics/auth/default/#module-django.contrib.auth.views