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

Posted

技术标签:

【中文标题】使用 Python 开发 Flask 应用程序时如何自动刷新浏览器?【英文标题】:How to automate browser refresh when developing an Flask app with Python? 【发布时间】:2019-11-20 04:55:54 【问题描述】:

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

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

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

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

https://github.com/lepture/python-livereload https://gist.github.com/amontalenti/8922609

我怎样才能获得流畅的 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

【问题讨论】:

【参考方案1】:

如果在 Windows 上:

set FLASK_ENV=development

【讨论】:

这会重新加载服务器,但不会刷新浏览器中的tab page【参考方案2】:

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

    下载并安装 livereload 库:

    pip install livereload

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

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

from app import app
from livereload import Server

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

    重新启动你的服务器:

    python run.py

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

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

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

希望对您有所帮助!

【讨论】:

听起来不错,我会将示例代码放在公共 github 上,以便您测试 @Nathan我还没有看过你的代码,但我得到了它部分地在 Linux VM 上工作。周末将在真正的 Linux 主机上检查您的代码。到目前为止非常感谢你:) @Wlad 首先看看我是如何构建应用程序的:run.py 启动应用程序,而 app 目录中的 init.py 文件创建了烧瓶应用程序。至于您的第二点,请确保在进行更改时保存文件,因为这表明将资产重新加载到 livereload,类似于前端框架与 webpack 的工作方式。 最简单的前进路径和我会考虑做的事情如下: 1. 克隆我创建的 repo 2. 使用 pip install -r requirements.txt 下载/安装依赖项 3. 运行应用程序使用:python run.py 并查看应用程序现在是否适合您。通过这种方式,您可以隔离问题并立即知道您的代码或环境设置是否存在问题。我在 Mac 上开发,但没关系 这解决了我对本地烧瓶开发的所有挫败感。谢谢!

以上是关于使用 Python 开发 Flask 应用程序时如何自动刷新浏览器?的主要内容,如果未能解决你的问题,请参考以下文章

[Python WEB开发] 使用WSGI开发类Flask框架

python web开发-flask中日志的使用

python web开发-flask中日志的使用

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

学习参考《Flask Web开发:基于Python的Web应用开发实战(第2版)》中文PDF+源代码

一线Python运维开发带你秒懂Flask框架