防止用户在登录后访问 Django 中的登录页面?

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

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('/')