如何自动监视.py,.js和其他源代码文件以重新启动Django(或其他任何相关的)应用程序,并在源更改时刷新浏览器?这可以在Rails中使用guard,在JS应用程序中使用grunt-contrib-watch和随附的livereload浏览器插件。如何为Django等Python Web应用程序执行此操作?
我用
启动我的Django服务器foreman start
这是我的Procfile:
web: newrelic-admin run-program gunicorn app.wsgi
按照Heroku / Newrelic文档或通常的的建议
python manage.py runserver
runserver
方法会在.py源更改时重新启动服务器,但不会在浏览器上重新启动,也不会查看其他文件 - 我可以同时保护它,但是我有两个进程需要注意而grunt或rake提供统一的接口。我想知道在Python开发人员中这样做的推荐方法是什么?
答案 0 :(得分:13)
您不需要浏览器扩展即可完成自动刷新。看看https://github.com/tjwalch/django-livereload-server。
我在https://stackoverflow.com/a/36961244/2950621
发布了更广泛的答案它通过使用manage.py命令(服务器)来监视.js和其他静态文件。服务器通过websockets向浏览器发送信号。每个页面都注入了一些客户端代码。注入的代码响应信号并刷新浏览器。
答案 1 :(得分:4)
安装此django应用程序:
pip install django-livesync
在您的django设置文件中添加如下内容:
INSTALLED_APPS = (
'...',
'livesync',
'django.contrib.staticfiles',
'...',
)
MIDDLEWARE_CLASSES = (
'livesync.core.middleware.DjangoLiveSyncMiddleware',
)
谨防注册' livesync'之前' django.contrib.staticfiles'如果您正在使用它。
现在,启动您的开发服务器:
python manage.py runserver
查看此内容以获取更多详细信息:https://github.com/fabiogibson/django-livesync
答案 2 :(得分:3)
使用python manage.py runserver
是最常用的。你将不得不使用另一个工具,如:http://livejs.com/来刷新浏览器本身,因为Django真的不知道它。
答案 3 :(得分:2)
对于所有明确的刷新感到沮丧,我为Firefox和Chrome创建了一个浏览器扩展,以实现自动化。该扩展程序适用于您添加到INSTALLED_APPS中的应用程序列表的Django应用程序。您可以在 github repo找到更多信息。
虽然repo具有完整的源代码,但扩展也可以在相应的Web商店中使用。只需搜索'Django Auto Refresh'即可。有了这些,您只需将应用程序复制到我们项目的文件夹中,并通过INSTALLED_APPS将其包含在内。我想添加一个pip设置脚本,但还没有时间去做。
HTH。如果这听起来像是自我推销,请道歉。
答案 4 :(得分:1)
我在这里尝试了几个答案。但是浏览器好像没有显示最近的代码变化。当我以隐身模式打开 Chrome 时,它对我有用。