为了账号安全,请及时绑定邮箱和手机立即绑定

KeyError at /login/'is_login' 请求方法:django

KeyError at /login/'is_login' 请求方法:django

慕盖茨4494581 2021-10-26 16:42:59
我正在用 django 编写网络代码。我不能使用会话。我想检查登录使用会话def user_login(request):    if request.session['is_login'] == True:        return HttpResponseRedirect('/home')    else:        next = request.POST.get('next', request.GET.get('next', ''))        if request.method == "POST":            username1 = request.POST.get('username')            password1 = request.POST.get('password')            user = authenticate(username=username1, password=password1)            if user is not None:                if user.is_active:                    login(request, user)                    if next:                        request.session['is_login'] = True                        return HttpResponseRedirect(next)                    return HttpResponseRedirect('/home')                else:                    return HttpResponse('Inactive user')            else:                return HttpResponseRedirect(LOGIN_URL)        return render(request, "pages/login.html")怎么修
查看完整描述

3 回答

?
萧十郎

TA贡献1815条经验 获得超13个赞

谢谢大家支持我。我解决了如果 request.session.get['is_login'] == True: 到 if request.session.get('is_login') == True:


查看完整回答
反对 回复 2021-10-26
?
Cats萌萌

TA贡献1805条经验 获得超9个赞

正如我在评论中提到的

改变这个:

if request.session['is_login'] == True:

对此:

if request.session.get('is_login') == True:

request.session.get不引发KeyError它要么返回关键位置的值,要么返回a None

您还可以在未找到键时更改默认行为,即None您可以返回其他类似这样的内容,而不是返回:

request.session.get('is_login', False)

上面的语句将False在失败时返回而不是None.

访问文档了解更多信息。


查看完整回答
反对 回复 2021-10-26
  • 3 回答
  • 0 关注
  • 466 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号