Javascript 在客户端上强制重新加载';s网页Django
我是Django开发的新手,想知道是否有可能在客户端触发网页刷新 我的设想: 客户端正在浏览网页1 我更新了数据库中的一些数据,希望刷新view.py以从数据库中获取新数据,并刷新客户端网页以显示新信息 我怎样才能做到这一点 谢谢 致以最良好的祝愿Javascript 在客户端上强制重新加载';s网页Django,javascript,python,django,database,Javascript,Python,Django,Database,我是Django开发的新手,想知道是否有可能在客户端触发网页刷新 我的设想: 客户端正在浏览网页1 我更新了数据库中的一些数据,希望刷新view.py以从数据库中获取新数据,并刷新客户端网页以显示新信息 我怎样才能做到这一点 谢谢 致以最良好的祝愿 location.reload() 在Django模板内部的HTML应该足够了。你需要在特定的事件中使用它吗?如果是这样,您需要找到一种方法来触发location.reload(),在这种情况下,您需要提供更多的细节。但本质上,您只需要使用一些J
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打开到服务器的开放永久连接,通过该连接可以推送新数据(或仅推送事件:“请刷新”)。优点:最佳体验,即时更新,缺点:在旧浏览器上不起作用,实现和部署复杂。这将是一个很好的开端
- 有两种选择:
{% 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