Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在客户端上强制重新加载';s网页Django_Javascript_Python_Django_Database - Fatal编程技术网

Javascript 在客户端上强制重新加载';s网页Django

Javascript 在客户端上强制重新加载';s网页Django,javascript,python,django,database,Javascript,Python,Django,Database,我是Django开发的新手,想知道是否有可能在客户端触发网页刷新 我的设想: 客户端正在浏览网页1 我更新了数据库中的一些数据,希望刷新view.py以从数据库中获取新数据,并刷新客户端网页以显示新信息 我怎样才能做到这一点 谢谢 致以最良好的祝愿 location.reload() 在Django模板内部的HTML应该足够了。你需要在特定的事件中使用它吗?如果是这样,您需要找到一种方法来触发location.reload(),在这种情况下,您需要提供更多的细节。但本质上,您只需要使用一些J

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

我的设想: 客户端正在浏览网页1

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

我怎样才能做到这一点

谢谢

致以最良好的祝愿

location.reload() 
在Django模板内部的HTML应该足够了。你需要在特定的事件中使用它吗?如果是这样,您需要找到一种方法来触发
location.reload()
,在这种情况下,您需要提供更多的细节。但本质上,您只需要使用一些JavaScript来监听事件以重新加载您的网页。如果你想进步,我会调查的


在Django模板内部的HTML应该足够了。你需要在特定的事件中使用它吗?如果是这样,您需要找到一种方法来触发
location.reload()
,在这种情况下,您需要提供更多的细节。但本质上,您只需要使用一些JavaScript来监听事件以重新加载您的网页。如果你想进步,我会调查的

有两种选择:

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

  • 添加一个只轮询是否应刷新页面的脚本。它将发送某种类型的令牌版本号,标识页面上的当前数据,并且您的Django视图可以判断页面是否需要刷新。然后脚本只需调用
    location.reload()
    刷新页面。赞成:不需要获取数据,刷新状态可以很容易地缓存,反对:仍然不是立即的,页面刷新发生在用户可能不期望的时候

  • 使用websocket打开到服务器的开放永久连接,通过该连接可以推送新数据(或仅推送事件:“请刷新”)。优点:最佳体验,即时更新,缺点:在旧浏览器上不起作用,实现和部署复杂。这将是一个很好的开端


    • 有两种选择:

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

      • 添加一个只轮询是否应刷新页面的脚本。它将发送某种类型的令牌版本号,标识页面上的当前数据,并且您的Django视图可以判断页面是否需要刷新。然后脚本只需调用
        location.reload()
        刷新页面。赞成:不需要获取数据,刷新状态可以很容易地缓存,反对:仍然不是立即的,页面刷新发生在用户可能不期望的时候

      • 使用websocket打开到服务器的开放永久连接,通过该连接可以推送新数据(或仅推送事件:“请刷新”)。优点:最佳体验,即时更新,缺点:在旧浏览器上不起作用,实现和部署复杂。这将是一个很好的开端


      在.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 %}
      
      {%block content%}
      $(文档).ready(函数(){
      setTimeout(函数(){
      位置。重新加载(true);
      警报(“页面现在将刷新”);
      }, 60000);  
      });
      {%endblock内容%}
      
      在.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 %}
      
      {%block content%}
      $(文档).ready(函数(){
      setTimeout(函数(){
      位置。重新加载(true);
      警报(“页面现在将刷新”);
      }, 60000);  
      });
      {%endblock内容%}
      
      每当我使用webapge 2更新数据库时。我需要在客户端当前打开的所有网页1上触发刷新事件。每当我使用webapge 2更新数据库时。我需要在客户端当前打开的所有网页1上触发刷新事件。这不是很容易做到。但是,您可以创建一个javascript,在后台每隔几秒钟轮询一次服务器,以检查页面是否需要刷新。Django视图将检查数据库中的数据的版本号、令牌或类似内容,以确定是否应该刷新页面。如果你的js收到答案是,刷新!然后它执行一个
      location.reload()
      。虽然如果页面是交互式的,并且突然刷新,那么用户界面不是很友好。但是django视图不会在我更新页面时检查“版本号”。因为我是从网页2的视图编辑来的。webapge 1的Django视图不做任何更改。如果我错了,请澄清。我的意思是第1页需要某种版本号(存储在数据库中)。第2页更改数据时,版本将递增。因此,当脚本调用您的特殊视图(发送它的版本)时,您的视图可以看到“是的,新版本”,并返回触发器进行刷新。是的,这正是我的第一个想法。但这是否可以在Django视图函数中实现?因为我不希望监视javascript中DB的变化。不,我说的是一个解决方案,您的页面(即javascript)每隔几秒钟轮询一次,以检查是否有变化。Django是HTTP,它是stateles