Python 为什么再次登录我的网站后我会看到登录页面?

Python 为什么再次登录我的网站后我会看到登录页面?,python,django,django-templates,django-1.10,Python,Django,Django Templates,Django 1.10,我有个问题。 1.在Django中,我在成功登录后创建了一个登录页面。如果我再次输入/accounts/login,我可以看到这个url,并且可以再次登录。 如何在该用户登录后禁用登录页面?如果用户输入登录页面的url,如何获得另一个页面 视图.py def user_login(request): if request.method == "POST": username = request.POST.get('username') password =

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

视图.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帮助

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

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={})
def用户登录(请求):
如果request.user.u经过身份验证:
返回重定向('home')
如果request.method==“POST”:
username=request.POST.get('username')
password=request.POST.get('password')
用户=验证(请求,用户名=用户名,密码=密码)
如果用户不是无:
登录(请求、用户)
返回重定向(“主页”)
其他:
消息。错误(请求“错误的用户名或密码”)
返回呈现(请求“login.html”,上下文={})
因此,
if
语句检查用户是否经过身份验证(登录),如果是,那么我们将向视图返回HTTP重定向响应(这里是
'home'

在之前的Django版本中,检查是
request.user.is\u authenticated()
(因此必须调用该方法),但由于这是一个属性


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

我在github中检查了两个项目,这些项目都有这个问题。为什么会有这个问题?@WillemVanOnsem对我来说,是的,我必须知道所有这些,以便进行面试。