2

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

Django-notification 似乎使用基于电子邮件的通知,但我想在网站本身内通知用户 - 就像 StackOverflow 用于未读通知/消息一样,用户将能够在挑战选项卡下查看活动挑战的数量. 不过,它不需要像 StackOverflow 那样实时。

已广泛搜索,但未能找到解决方案。

任何帮助,将不胜感激。

4

2 回答 2

1

如果您想要延迟类型的更新,请使用 JavaScriptsetinterval调用重复对视图的Ajax调用以检查通知。

例如,在您的基本模板中,有这样的东西(使用 jQuery)

function checkNotifications() {
    $.get("url", function(data) {
            // do something with the data
        }
    });
}
setInterval(checkNotifications, 30000);

每 30 秒检查一次通知。

WebSockets可用于实时更新机制。我没有在 Django 中使用 websockets,但是这个项目看起来很活跃,并且在我的谷歌搜索中名列前茅。

于 2015-04-02T20:27:24.103 回答
0

不确定您是否想要这种更标准/更简单的流程,但这里有:

鉴于,

假设您已经有一个 @login_required 来确定用户已登录

1)返回用户正在或已经参与的测验的查询集 2)根据您的选项过滤未响应的挑战,完成等,例如

unresponded = all_games.filter(status='unresponded')

3)通过渲染将您想要显示的不同游戏的所有不同上下文(包括未响应)发送到您想要的页面

return render(request, "games.html", context)

4) 在您的 games.html 页面中显示游戏。

于 2015-04-02T20:41:07.817 回答