Django未读消息系统

时间:2015-04-02 20:15:02

标签: python django notifications django-notification

我目前正在实施基于Django的点对点测验系统,其中用户可以挑战另一个用户进行测验。(就像测验一样)。我已经实现了它的几乎所有主要组件,最后剩下的一个是网站内用户通知 - 其中用户能够看到他新的未响应的挑战的数量。

似乎Django通知使用基于电子邮件的通知,但我想在网站内通知用户 - 就像StackOverflow有未读通知/消息一样,用户将能够看到有效的挑战数量挑战标签。它不一定像StackOverflow那样是实时的。

广泛使用Google搜索,但未能找到解决方案。

任何帮助都将不胜感激。

2 个答案:

答案 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页面中显示游戏。