How to prevent user to access login page in django when already logged in? How to prevent user to access login page in django when already logged in? django django

How to prevent user to access login page in django when already logged in?


You can redirect users by modifying your urls.py file like below:

from django.urls import pathfrom django.contrib.auth import views as auth_viewsfrom . import viewsapp_name = 'account'urlpatterns = [  path('signup/', views.register, name='register'),  path('', auth_views.LoginView.as_view(redirect_authenticated_user=True), name='login'),]

This will redirect already authenticated users from the login page.For the signup you will have to customize your register function add an if user is authenticated check.


You can use this decorator as well.

def login_excluded(redirect_to):    """ This decorator kicks authenticated users out of a view """     def _method_wrapper(view_method):        def _arguments_wrapper(request, *args, **kwargs):            if request.user.is_authenticated:                return redirect(redirect_to)             return view_method(request, *args, **kwargs)        return _arguments_wrapper    return _method_wrapper

Then call it in your views.py.

@login_excluded('app:redirect_to_view')def someview(request):    # ...