Flask 自动重新加载不会刷新浏览器

And*_*ist 5 python refresh reload flask

我已经阅读了有关此问题的几十个线程,但找不到对我有用的解决方案,因此非常感谢您为我提供的任何帮助,以了解是什么破坏了重新加载器。我对开发还很陌生(主要在 Node、Angular 和 Django 中工作)。我已经在 mac 和 ubuntu 上完成了测试,通过他们的文档使用了一个最小的 Flask 应用程序和一个大型应用程序设置,这是我所做的各种尝试的最简单的测试:

\n\n

在终端中:

\n\n
python3 -m venv virtualenv\nsource virtualenv/bin/activate\npip install flask\nvim server.py\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后

\n\n
from flask import Flask\napp = Flask(__name__)\n\n\n@app.route(\'/\')\ndef home():\n    return \'Hi\'\n
Run Code Online (Sandbox Code Playgroud)\n\n

wq 然后返回终端:

\n\n
export FLASK_ENV=development\nexport FLASK_DEBUG=1\nexport FLASK_APP=server.py\nflask run\n
Run Code Online (Sandbox Code Playgroud)\n\n

现在将返回语句字符串从“hi”更改为“hello”,直到我在浏览器上点击“刷新”后才发生任何变化。重要的是,服务器确实宣布发生了更改 - 它只是不重新加载浏览器。请参阅下面的输出:

\n\n
(virtualenv) \xe2\x9e\x9c  test git:(master) \xe2\x9c\x97 Flask run\n * Serving Flask app "server.py" (lazy loading)\n * Environment: development\n * Debug mode: on\n * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)\n * Restarting with stat\n * Debugger is active!\n * Debugger PIN: 297-732-354\n * Detected change in \'/Users/pb/Documents/code/projects/test/server.py\', reloading\n * Restarting with stat\n * Debugger is active!\n * Debugger PIN: 297-732-354\n
Run Code Online (Sandbox Code Playgroud)\n\n

我已经尝试过模板渲染、CSS 文件更改以及上面的简单返回语句。感谢您能为我提供的任何帮助。

\n

小智 6

Flask 检测本地文件更改,但不会将更改推送到您的浏览器。Flask 和浏览器是完全解耦的,Flask 只是站在那里等待请求,只有收到请求才做出响应。之后return 'Hello',浏览器和Flask之间的连接就会断开。

如果您不向 Flask 发出请求,Flask 无法向您发送响应。

  • 对于与我合作的观察者来说,当检测到文件发生更改时重新加载浏览器是标准行为。难道烧瓶就不能以这种方式工作吗? (2认同)
  • 冒着问愚蠢问题的风险,这与检测到文件更改时 django 或 nodemon 刷新浏览器的方式有何不同?听起来 Flask 没有观察者,就像我最初理解观察者如何运作一样。 (2认同)

小智 0

我认为浏览器不应该自行重新加载信息 - 您必须刷新页面才能显示任何新内容,除非您已经使用某种后端应用程序构建了该功能。