【问题标题】:Refreshing new messages value every second每秒刷新新消息值
【发布时间】:2017-05-07 21:10:13
【问题描述】:

在我的 Django 站点中,我有一个跨度,它显示了用户有多少新消息如下图所示:

现在我在每个可能的 django 视图中刷新这个值,它是我的 base.html 的一部分

Views.py

​​>
def someView(request,pk):
...
    mcount = UserMessage.objects.filter(receiver = request.user.pk, isRed = 0).count()
...
    return render(request, 'app/somehtml.html', {...'mcount':mcount...})

base.html

...
  <span class="messageCount"aria-hidden="true"> {{ mcount }} </span>
...

我想要做的是每隔几秒钟刷新一次,而无需用户重新加载页面。 我怎样才能做到这一点?

【问题讨论】:

  • 您可以轮询服务器并使用 Ajax 刷新该跨度
  • 您可以按照我的回答中提到的做一些事情。

标签: javascript python html django


【解决方案1】:

类似这样的:

function autoReloadSpan(){
    $.ajax({ url: "/poll/",
                     data: {},
                     type: 'GET',
                     success: function(data) {
                         $('.messageCount').html(data);
                     },
    });
}

autoReloadSpan(); // This will run on page load
setInterval(function(){
    autoReloadSpan() // this will run after every 5 seconds
}, 5000);

【讨论】:

    【解决方案2】:

    您必须使用 Javascript 在客户端进行自动刷新。

    window.setTimeout(function () {
        location.href = "http://yourwebsite.com";
    }, 30000);
    

    这会每 30 秒刷新一次页面。

    还有 meta html 标签:

    <head>
      <meta http-equiv="refresh" content="30">
    </head>
    

    这也会每 30 秒刷新一次页面。

    【讨论】:

    • 好吧,因为我的某些页面中有表单,我不想刷新整个页面,只刷新那个值
    • 你可以使用ajax来只刷新span而不是整个页面。看看 $.ajax()。您可以让它直接调用 someView 并处理响应以根据结果更新跨度。
    猜你喜欢
    • 2013-05-02
    • 1970-01-01
    • 1970-01-01
    • 2019-04-11
    • 1970-01-01
    • 2022-07-06
    • 2016-03-21
    • 2012-06-13
    • 2014-06-01
    相关资源
    最近更新 更多