Как перенаправить 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 или любым другим, которое вы можете дать вместо реального имени представления.

Вернуться на верх