强制重新加载客户端网页Django

时间:2018-10-23 12:55:30

标签: javascript python django database

我是Django开发的新手,想知道是否有可能在客户端触发网页刷新。

我的情况: 客户端正在浏览网页1。

我已将一些数据更新到数据库,并希望刷新view.py以从数据库中获取新数据,并刷新客户端网页以显示新信息。

我该如何实现?

谢谢。

最好的问候。

3 个答案:

答案 0 :(得分:1)

有两种选择:

  • 在页面上添加一个脚本,该脚本每隔几秒钟轮询一次服务器(ajax)以获取最新数据,并在适当位置刷新数据(不涉及页面刷新)。为此,您将在Django中创建一个视图,该视图以JSON格式返回数据,而您的JavaScript将替换HTML中的数据。 Pro:很棒的用户体验,页面仍然可用。缺点:不是立即开始的,您必须考虑可伸缩性,因为每个打开的页面都会不断轮询服务器,但是缓存响应应该很容易。

  • 添加一个脚本,该脚本仅轮询是否应刷新页面。它将发送某种版本的令牌,以标识页面上的当前数据,并且您的Django视图可以告诉您是否需要刷新页面。然后脚本将仅调用location.reload()来刷新页面。优点:无需获取数据,刷新状态可以轻松地缓存;缺点:仍然不是立即的,当用户可能不希望它时发生页面刷新。

  • 使用网络套接字向服务器开放开放的永久连接,您可以通过该连接推送新数据(或仅发送事件:“请刷新”)。优点:最佳体验,立即更新,缺点:在旧的浏览器上不起作用,实现和部署都很复杂。 django-channels将是一个很好的入门者。

答案 1 :(得分:0)

location.reload() 

在Django模板内部的HTML中就足够了。您是否需要在特定事件上触发?如果是这样,您将想找到一种触发location.reload()的方法,在这种情况下,您将需要提供一些其他细节。但实际上,您只是需要一些JavaScript来监听事件以重新加载您的网页。如果您想获得高级,我会研究Django Channels

答案 2 :(得分:-1)

在.html代码中尝试此操作。每分钟刷新页面

{% block content %}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
    setTimeout(function(){
       location.reload(true);
       alert("The page will now refresh");
    }, 60000);  
});
</script>
{% endblock content %}