如何在Django 1.9中显示用户状态(在线,离线)?
我试图做一个“社会人”的网站,在那里你可以加好友,创造职位等,所以主要的问题是,如何显示用户状态,使用Django管理API?如何在Django 1.9中显示用户状态(在线,离线)?
在此先感谢!
在HTML:
{{ user.is_authenticated }}
鉴于:
def index(request):
user = User.objects.get(username="root")
return render(request, 'blog/index.jade', {'users': users})
所以这基本上返回我真或假,但这是没有的状态只对 “根” 的用户,但任何人。
你不会使用Django管理页面,查看被 - 这还只是针对数据库管理。你所指的{{user.is_authenticated}}是Django模板系统的一部分。这是一个在页面加载时写入页面的变量。在用户重新加载页面之前它不会改变。你需要做的是使用javascript的setInterval函数来定期做一个ajax回调服务器。所以你有一个带初始化函数的js文件,它调用setInterval函数,每隔20秒左右调用一次ajax函数。 ajax调用转到urls.py文件中定义的url,该文件将其与view.py文件中定义的视图相关联。这种观点查询数据库,看是否有用户进行身份验证或没有,然后返回一个HttpResponse这些信息到你的Ajax调用,它具有保存到一个对象,你再渲染页面的响应回调在任何你想要的方式,让用户知道其他用户或不被记录。
谢谢!我会尝试 :) – TheDeadMays
让Ajax请求每5秒钟将通过视图进行处理。并且在每个请求更新表列last_active对应于将更新时间戳的用户(您必须生成时间戳类型的last_active列)。
再拍Ajax请求每5秒钟获取所有谁通过比较当前时间和对应于每个用户last_active时间戳在线用户。它将返回所有在线用户。
您可以使用此逻辑,使多用户/单用户聊天系统也。
制作Ajax请求代码:
(function getOnline() {
$.ajax({
url: '/get_online',
type: "GET",
data:
{
user:user
},
success: function(data) {
console.log("success");
},
complete: function() {
// Schedule the next request when the current one is complete
setTimeout(getOnline, 5000);
},
error: function(xhr, errmsg, err) {
console.log("error");
}
});
})();
是什么意思的人是“在线”? –
@DanielRoseman喜欢你可以有两个现场登录:你是在线或离线。所以我试图做到这一点。 在线 - 您已登录,每个人都可以看到。 离线 - 你没有登录网站,每个人都看到。 – TheDeadMays
是的,但是如何确定某人是否“在线”,是我的问题。如果你去吃午饭会怎样?或关闭浏览器选项卡而不注销? –