使用Python开发Flask应用时如何自动浏览器刷新?

时间:2019-07-10 14:22:54

标签: python flask refresh livereload hot-reload

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

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

J只希望刷新浏览器即可。

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

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

我认为答案来自上方链接,位于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

2 个答案:

答案 0 :(得分:2)

这是您提出的一个有趣的问题,因此我构建了一个使用livereload库的快速且肮脏的Flask应用程序。下面列出了使它起作用的关键步骤:

  1. 下载并安装livereload库:

    pip install livereload

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

例如,我的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,因此我的网址如下所示:http://localhost:5500/

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

为完整性起见,可以找到here

希望有帮助!

答案 1 :(得分:-1)

如果在 Windows 上:

set FLASK_ENV=development