我正在尝试制作一个" social"网站,你可以添加朋友,创建帖子等。所以主要的问题是,如何使用Django Admin API显示用户状态?
提前致谢!
在html中:
{{ user.is_authenticated }}
在视图中:
def index(request):
user = User.objects.get(username="root")
return render(request, 'blog/index.jade', {'users': users})
所以这基本上归还了我的真或假,但这不仅仅是" root"用户,但任何人。
答案 0 :(得分:1)
每隔5秒发出一次Ajax请求,这将由视图处理。并且在每个请求更新表列last_active对应于将更新时间戳的用户(您必须创建time_amp类型的last_active列)。
每隔5秒发出一次Ajax请求,通过比较每个用户对应的当前时间和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");
}
});
})();
答案 1 :(得分:0)
您不会使用Django管理页面 - 这只是用于数据库管理。你在{{user.is_authenticated}}中提到的是Django模板系统的一部分。这是在页面加载时写入页面的变量。在用户重新加载页面之前,它不会更改。您需要做的是使用javascript的setInterval函数来定期对服务器执行ajax调用。所以你有一个带有初始化函数的js文件,该函数调用setInterval函数,该函数反过来每20秒左右进行一次ajax调用。 ajax调用转到urls.py文件中定义的url,该文件将其与views.py文件中定义的视图相关联。该视图查询数据库以查看用户是否经过身份验证,然后将HttpResponse中的信息返回给您的ajax调用,该调用具有一个回调函数,用于保存对象的响应,然后您可以将其呈现给页面。你想要的方式,让用户知道其他用户是否登录。