我正在尝试为我的项目构建一个简单的登录页面
Posted
技术标签:
【中文标题】我正在尝试为我的项目构建一个简单的登录页面【英文标题】:I've trying to build a simple login page for my project 【发布时间】:2016-11-10 15:48:32 【问题描述】:def login(request):
c =
c.update(csrf(request))
return render_to_response(request,
'login.html', c)
def auth_view(request):
username = request.POST.get
('username', '')
password = request.POST.get
('password', '')
user = auth.authenticate
(username = username, password =
password)
if user is not None:
auth.login(request,user)
if request.method == 'POST':
return HttpResponseRedirect('accounts/loggedin/')
else:
Return HttpResponseRedirect('accounts/invalid/')
每次执行 else 语句...我不知道出了什么问题 ...... 在我的登录页面中,当我输入登录详细信息时,无论它是否正确,它总是重定向到“帐户/无效”
Views.py
【问题讨论】:
这和你的other question有关吗? 1)这是你的老问题的欺骗,2)给我们一些细节。什么错误?什么不良影响 每次如果 request.method == 'POST' 已被忽略 else 语句执行,每次当我输入登录详细信息时,它都会重定向到 'account/invalid/',无论详细信息是否正确或不是 这是完整的方法吗?我看不到它如何进入 that else 语句,因为您通过 post 数据进行身份验证,所以方法 not 什么时候是 POST ?此外,Python 不知道如何处理 Return,因此它永远不会重定向。 @KapilSachdev -authenticate
返回无。 OP,你应该创建一个minimal reproducible example
【参考方案1】:
你的逻辑不好,if user is not None:改用if user.is_anonymous:
试试我的逻辑
def login(request):
c =
c.update(csrf(request))
return render_to_response(request,
'login.html', c)
def auth_view(request):
username = request.POST.get
('username', '')
password = request.POST.get
('password', '')
user = auth.authenticate
(username = username, password =
password)
if user.is_anonymous:
auth.login(request,user)
if request.method == 'POST':
return HttpResponseRedirect('accounts/loggedin/')
else:
return HttpResponseRedirect('accounts/invalid/')
注意:您的回报有上限
现在应该可以了。试试看!!
【讨论】:
【参考方案2】:不要使用HttpResponseRedirect
,而是使用render
def something(request):
if something:
do something()
if something == 'POST':
return render(request, 'accounts/loggedin.html')
else:
return render(requset, 'accounts/invalid.html')
【讨论】:
以上是关于我正在尝试为我的项目构建一个简单的登录页面的主要内容,如果未能解决你的问题,请参考以下文章