Предотвращение доступа пользователя к странице входа в систему в django, когда он уже вошел в систему?

def admin_login(request):
if request.method == 'POST':
    username = request.POST["username"]
    password = request.POST["password"]
    user = authenticate(request,username = username, password = password)
    if user is not None:
        if(user.is_superuser):
            auth_login(request, user)
            return redirect(reverse("dashboard"))
        else:
            messages.info(request, "invalid credentials")
        return redirect(reverse("admin"))
     
return render(request,'login.html') 
 

это функция mylogin для администратора, как предотвратить доступ пользователя к странице входа в систему после авторизации?

Вы можете проверить, аутентифицирован ли запрашивающий пользователь, и если да, то перенаправить его на другую страницу. Вы можете проверить, аутентифицирован ли пользователь, следующим образом

if request.user.is_authenticated:
    # redirect

поэтому ваша функция представления будет выглядеть следующим образом

def admin_login(request):
    if request.user.is_authenticated:
        return redirect(reverse("admin")) 
    if request.method == 'POST':
        username = request.POST["username"]
        password = request.POST["password"]
        user = authenticate(request,username = username, password = password)
        if user is not None:
            if(user.is_superuser):
                auth_login(request, user)
                return redirect(reverse("dashboard"))
            else:
                messages.info(request, "invalid credentials")
            return redirect(reverse("admin"))
         
    return render(request,'login.html') 

сделайте это в начале вашей функции входа

def user_login(request, *args, **kwargs):
    if(request.user.is_authenticated):
        print('user authenticated')
        return HttpResponseRedirect('/')
Вернуться на верх