我有一个问题。 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寻求帮助
答案 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-1.10之前的Django版本中,检查为request.user.is_authenticated()
(因此该方法必须称为),但是由于django-1.10,这是一个属性。
但我不会将其称为(安全)问题。还可以将其视为一项功能,例如登录另一个帐户。