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

Django如何判断用户是否处于登录状态?

Django如何判断用户是否处于登录状态?

沧海一幻觉 2019-05-20 09:26:19
首先描述一下页面的问题:页面有一个导航栏,可以根据用户是否登录来展示登录或者登出按钮(目前使用is_authenticated属性判断)页面有一个显示全部用户的选项,用于展示所有已创建的用户,点击用户可查看用户的详细信息。点击查看某一用户的信息并不代表这个用户已经登录,但是如果使用is_authenticated来检验用户,根据django的官网描述,所有的用户实例都会返回True,那么导航栏也会做相应改变。这不是我需要的。请问有什么方法能够判断一个用户是否处于登录状态?另外我正在尝试使用session,这是视图函数:defuser_login(request):username=request.POST["username"]password=request.POST["password"]user=authenticate(request,username=username,password=password)ifuserisnotNone:request.session["username"]=usernamelogin(request,user)...这个登录视图使用的模板是login.html,但是我希望能在主页的模板base.html中使用session,这样要如何实现呢?
查看完整描述

2 回答

?
波斯汪

TA贡献1811条经验 获得超4个赞

session不准确,用户主动退出会清掉session,但直接关闭页面并不会清掉session信息,所以如果想要准确的登录用户信息需要用到长连接(但单单这个功能使用websocket是否合适自己需要考虑下),Django中可以使用channels,推荐文档:Django使用Channels实现WebSocket--上篇Django使用Channels实现WebSocket--下篇
                            
查看完整回答
反对 回复 2019-05-20
?
慕桂英546537

TA贡献1848条经验 获得超10个赞

模板中可以直接使用request对象的,比如request.user。如果不能的话需要settings中进行配置TEMPLATES的OPTIONS.context_processors增加django.template.context_processors.request:
TEMPLATES=[
{
'BACKEND':'django.template.backends.django.DjangoTemplates',
'DIRS':[os.path.join(DIRNAME,"templates")],
'APP_DIRS':True,
'OPTIONS':{
'debug':DEBUG,
'context_processors':[
'django.template.context_processors.request',
],
},
},
]
                            
查看完整回答
反对 回复 2019-05-20
  • 2 回答
  • 0 关注
  • 1028 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信