Как перенаправить http://127.0.0.1:8000/ на страницу входа в систему, если пользователь не вошел в систему
В моем проекте Django я пытаюсь сделать так, чтобы http://127.0.0.1:8000/
, которая является главной страницей, перенаправляла на страницу входа в систему, если пользователь не вошел в систему, но есть пользователь, который вошел в систему, я хочу, чтобы http://127.0.0.1:8000/
стала http://127.0.0.1:8000/username/
Я пробовал разные ответы, но ничего конкретного не привело к этому ответу: Вот вид входа в систему после входа:
class LoginView(LoginView):
template_name = 'login.html'
def get_success_url(self):
user=self.request.user.username
return f'/{user}/'
Вот урлы для входа:
path('accounts/login/', LoginView.as_view(redirect_authenticated_user=True,template_name='users/login.html'), name='login'),
Вот домашний вид:
class home(LoginRequiredMixin, ListView):
model = Item
template_name = 'app/home.html'
context_object_name = 'items'
Вот ссылки на приложения:
path('<str:username>/', home.as_view(), name='home'),
Мой вопрос:
Как перенаправить главную страницу на http://127.0.0.1:8000/username/
, если пользователь вошел в систему, а если нет - на login page
Вы можете использовать settings.LOGIN_URL
и settings.LOGIN_REDIRECT_URL
так:
class LoginView(LoginView):
template_name = 'login.html'
login_url='login'
def get_success_url(self):
user=self.request.user.username
return reverse('home', args=(user))
В settings.py:
LOGIN_URL='some_app_name:login' #Redirect to login page if not logged in.
LOGIN_REDIRECT_URL='some_app_name:home' #Redirect to home page after successful login
По умолчанию используется LOGIN_URL
и LOGIN_REDIRECT_URL
из settings.py, если не указано в views.
Note:
Не стоит называть ваше представление одинаково с реальным представлением аутентификации, поэтому оно должно бытьMyLoginView
или любым другим, которое вы можете дать вместо реального имени представления.
Вы можете использовать settings.LOGIN_URL
и settings.LOGIN_REDIRECT_URL
так:
class LoginView(LoginView):
template_name = 'login.html'
login_url='login'
def get_success_url(self):
user=self.request.user.username
return reverse('home', args=(user))
В settings.py:
LOGIN_URL='some_app_name:login' #Redirect to login page if not logged in.
LOGIN_REDIRECT_URL='some_app_name:home' #Redirect to home page after successful login
По умолчанию используется LOGIN_URL
и LOGIN_REDIRECT_URL
из settings.py, если не указано в views.
Note:
Не стоит называть ваше представление одинаково с реальным представлением аутентификации, поэтому оно должно бытьMyLoginView
или любым другим, которое вы можете дать вместо реального имени представления.