Django/authentification: как сделать страницу входа в систему = главной странице?
Я разрабатываю веб-приложение Django, используя бэкенд аутентификации Django. Оно работает без необходимости определять какие-либо представления или формы, только шаблон для 'bootstrap'.
Но я хотел бы изменить url 'navigation' и, возможно, шаблон 'redesign', используя django-crispy-form.
Но первый шаг - сделать так, чтобы пользователь получал прямой доступ к странице входа, когда 'root' url (https://<my_domain>/) вводится в адресную строку навигации.
В настоящее время пользователь получает доступ к главной странице моего веб-приложения, которая содержит кнопку входа, перенаправляющую на https://<my_domain>/registration/login
Нужно ли мне переопределить все представления аутентификации (и формы для дизайна) и изменить url по мере необходимости?
Или есть самый простой способ, возможно, используя settings.py, сделать перенаправление пользователя на страницу входа с корневого url?
проект
- app
- core
- settings
- base.py
- ...
- views.py
- urls.py
- app1
- forms.py
- views.py
- templates
- app1
- registration # <= currently no forms.py nor views.py
- templates
- registration
- login.html
- password_change_done.html
- ...
- static
- templates
- layout
- base.html
- home.html
core/urls.py
urlpatterns = [
path('', views.home, name='home'), # <= 'root' url
# path('registration/', include('registration.urls')), # <= registration views override
path('registration/', include('django.contrib.auth.urls')),
]
core/settings.py
LOGIN_URL = 'home'
LOGIN_REDIRECT_URL = 'home'
LOGOUT_REDIRECT_URL = 'login'
Вы не можете этого иметь:
LOGIN_URL = 'home'
Используйте классическое решение:
LOGIN_URL = 'login'
А затем используйте декоратор, упомянутый @AnkitTiwari, если вы работаете в Function Based Views просто сверху на home представлении:
@login_required
def home_view(request):
Или LoginRequiredMixin в Class Based Views:
from django.contrib.auth.mixins import LoginRequiredMixin
class HomeView(LoginRequiredMixin, View):