使用 Python 开发 Flask 应用程序时如何自动刷新浏览器?
How to automate browser refresh when developing an Flask app with Python?
我开始学习 Flask 来开发 Web 应用程序。我真正缺少的是 any 代码更改(包括静态文件、模板等)后自动刷新浏览器。这似乎是几乎所有 Javascript 框架中的标准功能。前端人员对此有几个术语:自动重新加载/刷新、热重新加载/刷新 (hotreload)、实时重新加载/刷新 (livereload),...
Whosebug 上的大多数类似问题都与 Flask 服务器的 auto-reload 有关 (--> https://whosebug.com/search?q=flask+auto+reload)。
J 只是想要一个简单的浏览器刷新。
我用谷歌搜索并尝试了几件事 - 但没有成功:
我怎样才能拥有顺畅的 Flask 开发体验,而不必每天在浏览器中按 1000 次 F5 键来查看我的更改结果?
我认为答案接近上面 link 的 python-livereload
。
所以我想我的问题的另一个标题可能是:
Does somebody have a working example of 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
这是您提出的一个有趣的问题,因此我构建了一个使用 livereload 库的快速而肮脏的 Flask 应用程序。下面列出了使它起作用的关键步骤:
下载并安装 livereload 库:
pip install livereload
在启动烧瓶应用程序的主文件中,run.py
在我的特定情况下,用 livereload 提供的 Server
class 包装烧瓶应用程序.
例如,我的 run.py
文件如下所示:
from app import app
from livereload import Server
if __name__ == '__main__':
server = Server(app.wsgi_app)
server.serve()
再次启动服务器:
python run.py
在浏览器中导航到本地主机,您的代码更改将是 auto-refreshed。对我来说,我使用了 livereload 提供的默认端口 5500,所以我的 url 如下所示:http://localhost:5500/
.
通过这些步骤,您现在应该能够利用 auto-reloads 进行 python 开发,类似于 webpack 为大多数前端框架提供的功能。
为了完整起见,可以找到代码库 here
希望对您有所帮助!
如果在 Windows:
set FLASK_ENV=development
我使用 Guard::LiveReload 因为 python-livereload
的解决方案不能正确地调试(对我来说)。
在第一个终端模拟器中:
$ cd my-flask-project
$ flask run
* Serving Flask app 'webface' (lazy loading)
* Environment: development
* Debug mode: on
* Running on http://127.0.0.1:54321/ (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
在第二个u终端仿真器中:
$ cd my-flask-project
$ guard init livereload
现在我编辑 Guardfile 和 add/edit watch
。像这样:
watch(%r{.+\.py})
watch(%r{webface/.+\.(css|js|html(\.j2)?)})
再次在秒终端模拟器中:
$ guard
17:29:25 - INFO - LiveReload is waiting for a browser to connect.
17:29:25 - INFO - Guard is now watching at '/home/marek/my-flask-project'
[1] guard(main)> 17:29:29 - INFO - Browser connected.
17:29:31 - INFO - Reloading browser: webface/templates/base.html.j2
17:45:41 - INFO - Reloading browser: webface/templates/base.html.j2
[1] guard(main)>
可能需要在浏览器中单击 livereload 扩展按钮 以将浏览器连接到 guard
。
我开始学习 Flask 来开发 Web 应用程序。我真正缺少的是 any 代码更改(包括静态文件、模板等)后自动刷新浏览器。这似乎是几乎所有 Javascript 框架中的标准功能。前端人员对此有几个术语:自动重新加载/刷新、热重新加载/刷新 (hotreload)、实时重新加载/刷新 (livereload),...
Whosebug 上的大多数类似问题都与 Flask 服务器的 auto-reload 有关 (--> https://whosebug.com/search?q=flask+auto+reload)。
J 只是想要一个简单的浏览器刷新。
我用谷歌搜索并尝试了几件事 - 但没有成功:
我怎样才能拥有顺畅的 Flask 开发体验,而不必每天在浏览器中按 1000 次 F5 键来查看我的更改结果?
我认为答案接近上面 link 的 python-livereload
。
所以我想我的问题的另一个标题可能是:
Does somebody have a working example of 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
这是您提出的一个有趣的问题,因此我构建了一个使用 livereload 库的快速而肮脏的 Flask 应用程序。下面列出了使它起作用的关键步骤:
下载并安装 livereload 库:
pip install livereload
在启动烧瓶应用程序的主文件中,
run.py
在我的特定情况下,用 livereload 提供的Server
class 包装烧瓶应用程序.
例如,我的 run.py
文件如下所示:
from app import app
from livereload import Server
if __name__ == '__main__':
server = Server(app.wsgi_app)
server.serve()
再次启动服务器:
python run.py
在浏览器中导航到本地主机,您的代码更改将是 auto-refreshed。对我来说,我使用了 livereload 提供的默认端口 5500,所以我的 url 如下所示:
http://localhost:5500/
.
通过这些步骤,您现在应该能够利用 auto-reloads 进行 python 开发,类似于 webpack 为大多数前端框架提供的功能。
为了完整起见,可以找到代码库 here
希望对您有所帮助!
如果在 Windows:
set FLASK_ENV=development
我使用 Guard::LiveReload 因为 python-livereload
的解决方案不能正确地调试(对我来说)。
在第一个终端模拟器中:
$ cd my-flask-project
$ flask run
* Serving Flask app 'webface' (lazy loading)
* Environment: development
* Debug mode: on
* Running on http://127.0.0.1:54321/ (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
在第二个u终端仿真器中:
$ cd my-flask-project
$ guard init livereload
现在我编辑 Guardfile 和 add/edit watch
。像这样:
watch(%r{.+\.py})
watch(%r{webface/.+\.(css|js|html(\.j2)?)})
再次在秒终端模拟器中:
$ guard
17:29:25 - INFO - LiveReload is waiting for a browser to connect.
17:29:25 - INFO - Guard is now watching at '/home/marek/my-flask-project'
[1] guard(main)> 17:29:29 - INFO - Browser connected.
17:29:31 - INFO - Reloading browser: webface/templates/base.html.j2
17:45:41 - INFO - Reloading browser: webface/templates/base.html.j2
[1] guard(main)>
可能需要在浏览器中单击 livereload 扩展按钮 以将浏览器连接到 guard
。