如何在Django中更新数据库后自动更新视图?

2024-05-19 20:11:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个问题,我必须显示进入数据库的数据,而不必按任何按钮或做任何事情。 我正在为一家医院创建一个应用程序,它有两个视图,一个用于医生,一个用于患者。 我想一旦病人出现症状,医生就可以不按任何按钮立即看到。 我不知道怎么做。 任何帮助都将不胜感激。 提前谢谢


Tags: 数据症状患者视图数据库应用程序事情按钮
2条回答

像Django这样的标准web框架的工作方式是,它需要请求输入并提供输出。你知道吗

Request -> (Nginx/Gunicorn/...) -> Django -> Output -> (Html/JSON/XML)

当您在浏览器中键入地址并按enter键,或者发送Ajax请求时(相同,但不按enter键并刷新页面),就会发生请求。你知道吗

Django一个人不可能做这样的事:

(An event on your server) -> Django -> your browser

Django不知道你的浏览器在哪里。你的浏览器知道他在哪里,但不是相反。你知道吗

过去,我们通过在JavaScript中设置一个每n秒刷新一次页面的计时器来解决这个问题。你知道吗

setTimeout(function(){
   window.location.reload(1);
}, 5000);

现在,更好的解决方案是使用WebSocket。客户端,它们看起来是这样的:

let mySocket = new WebSocket("ws://www.example.com/socketserver");

mySocket.onmessage = function (event) {
  console.log(event.data);
}

这假设在"ws://www.example.com/socketserver"中,您正在为一个web套接字提供服务,该套接字是一个服务器,每当您通知它时,它就会向所有侦听的客户端发送消息。你知道吗

Django无法为您做到这一点:它期望的是第一种交互,而且仅此而已。你知道吗

如果你已经有了Django的程序或者你只精通它,那么通常推荐用于websockets的服务器端软件是芹菜。你知道吗

在这里阅读:https://celery.readthedocs.io/en/latest/getting-started/introduction.html

对于您的应用程序来说,这可能相当复杂。你知道吗

另一种选择是NodeJS,一种100%异步的运行时环境。你知道吗

你不能单独用Django。例如,您必须使用一些JS框架(React、Vue、Angular)和WebSockets。你知道吗

相关问题 更多 >