19

我已经开始学习 Flask 来开发 Web 应用程序。我真正缺少的是在任何代码更改(包括静态文件、模板等)后自动刷新浏览器。这似乎是几乎所有 Javascript 框架中的标准功能。前端人员对此有几个术语:自动重新加载/刷新,热重新加载/刷新(hotreload),实时重新加载/刷新(livereload),......

在 Stackoverflow 上,最类似的问题与 Flask 服务器的自动重新加载有关(--> https://stackoverflow.com/search?q=flask+auto+reload)。

J 只想要一个简单的浏览器刷新。

我用谷歌搜索并尝试了几件事 - 没有运气:

我怎样才能在使用 Flask 时获得流畅的开发体验,而不必每天在浏览器中按 1000 次 F5 键来查看我的更改结果?

我认为答案python-livereload离上面的链接很近。所以我想我的问题的另一个标题可能是:

有人有 Flask + python-livereload 的工作示例吗?

我从他们的文档中得到它是愚蠢的:)

编辑:为了完整起见,这里是我正在使用的 Flask 应用程序。

# filename: main.py

from flask import Flask, render_template
from livereload import Server



app = Flask(__name__)

@app.route('/')
def index():
    return "INDEX"

@app.route('/bart')
def use_jinja():
    return render_template('basic.html')



if __name__ == '__main__':
    server = Server(app.wsgi_app)
    server.serve(port=5555)

我启动应用程序

python main.py
4

2 回答 2

21

这是你提出的一个有趣的问题,所以我构建了一个快速而肮脏的 Flask 应用程序,它利用了 livereload 库。下面列出了使其工作的关键步骤:

  1. 下载并安装 livereload 库:

    pip install livereload

  2. 在启动烧瓶应用程序的主文件中,run.py在我的特定情况下,Server用 livereload 提供的类包装烧瓶应用程序。

例如,我的run.py文件如下所示:

from app import app
from livereload import Server

if __name__ == '__main__':
    server = Server(app.wsgi_app)
    server.serve()
  1. 再次启动您的服务器:

    python run.py

  2. 在浏览器中导航到 localhost,您的代码更改将自动刷新。对我来说,我使用了 livereload 提供的默认端口 5500,所以我的 url 如下所示http://localhost:5500/

通过这些步骤,您现在应该能够利用自动重新加载来进行 python 开发,类似于 webpack 为大多数前端框架提供的功能。

为了完整起见,代码库可以在这里找到

希望这会有所帮助!

于 2019-07-10T15:39:36.680 回答
0

如果在 Windows 上:

set FLASK_ENV=development
于 2021-03-27T02:52:17.623 回答