我目前正在实施基于Django的点对点测验系统,其中用户可以挑战另一个用户进行测验。(就像测验一样)。我已经实现了它的几乎所有主要组件,最后剩下的一个是网站内用户通知 - 其中用户能够看到他新的未响应的挑战的数量。
似乎Django通知使用基于电子邮件的通知,但我想在网站内通知用户 - 就像StackOverflow有未读通知/消息一样,用户将能够看到有效的挑战数量挑战标签。它不一定像StackOverflow那样是实时的。广泛使用Google搜索,但未能找到解决方案。
任何帮助都将不胜感激。
答案 0 :(得分:1)
如果您想要延迟更新,请进行JavaScript setinterval
调用,重复Ajax次调用视图以检查通知。
例如,在你的基本模板中,有这样的东西(使用jQuery)
function checkNotifications() {
$.get("url", function(data) {
// do something with the data
}
});
}
setInterval(checkNotifications, 30000);
每隔30秒检查一次通知。
WebSockets可用于实时更新机制。我没有使用带有Django的websockets,但this project看起来很活跃,并且在我的谷歌搜索中名列前茅。
答案 1 :(得分:0)
不确定您是否需要这种更标准/简单的流程类型,但请注意:
在视野中,
假设您已经建立了@login_required用户已登录
1)返回使用或已参与的测验的查询集 2)根据您的选项,完成等过滤未响应的挑战,例如
unresponded = all_games.filter(status='unresponded')
3)通过渲染将您要显示的不同游戏的所有不同上下文(包括未响应)发送到您想要的页面
return render(request, "games.html", context)
4)在games.html页面中显示游戏。