为什么再次登录我的网站后,我可以看到登录页面?

时间:2018-09-28 19:33:42

标签: python django django-templates

我有一个问题。 1.在Django中,我成功登录后创建了一个登录页面。如果我再次输入/ accounts / login,则可以看到该URL,然后可以再次登录。 该用户登录后如何禁用登录页面,并且如果用户输入登录页面的URL会获得另一个页面?

views.py

def user_login(request):
    if request.method == "POST":
        username = request.POST.get('username')
        password = request.POST.get('password')
        user = authenticate(request, username=username, password=password)
        if user is not None:
            login(request, user)
            return redirect("home")
        else :
            messages.error(request, "Bad username or password")

    return render(request, "login.html", context={})

tnx寻求帮助

1 个答案:

答案 0 :(得分:1)

您可以通过添加检查用户是否已通过身份验证的检查来“禁用”它,然后将其重定向到其他地方,例如:

def user_login(request):
    if request.user.is_authenticated:
        return redirect('home')
    if request.method == "POST":
        username = request.POST.get('username')
        password = request.POST.get('password')
        user = authenticate(request,username=username,password=password)
        if user is not None:
            login(request,user)
            return redirect("home")
        else :
            messages.error(request,"Bad username or password")

    return render(request,"login.html",context={})

因此if语句检查用户是否已通过身份验证(登录),如果是,则我们向视图(此处为'home')返回HTTP重定向响应。

之前的Django版本中,检查为request.user.is_authenticated()(因此该方法必须称为),但是由于,这是一个属性。

但我不会将其称为(安全)问题。还可以将其视为一项功能,例如登录另一个帐户。