如何在文件更改时自动重新加载Django?

met*_*mit 15 python django web-applications livereload

如何自动监视.py,.js和其他源代码文件以重新启动Django(或其他任何相关的)应用程序并在源更改时刷新浏览器?这可以在Rails中使用guard,在JS应用程序中使用grunt-contrib-watch和随附的livereload浏览器插件.如何为Django等Python Web应用程序执行此操作?

我用我的Django服务器启动

foreman start
Run Code Online (Sandbox Code Playgroud)

这是我的Procfile:

web: newrelic-admin run-program gunicorn app.wsgi
Run Code Online (Sandbox Code Playgroud)

正如Heroku/Newrelic文档或通常所说的那样

python manage.py runserver
Run Code Online (Sandbox Code Playgroud)

runserver方法确实在.py源更改时重新启动服务器,但不是浏览器并且不看其他文件 - 我可以在它旁边运行后卫,但是我有两个进程我必须要处理,而grunt或rake提供统一接口.我想知道在Python开发人员中这样做的推荐方法是什么?

我找不到任何详细,全面的文档 - 只是在这里那里进行不完整的讨论.

nmg*_*eek 19

您不需要浏览器扩展即可完成自动刷新.看看https://github.com/tjwalch/django-livereload-server.

我在/sf/answers/2587287111/上发布了更广泛的答案

它的工作原理是使用manage.py命令(服务器)来监视.js和其他静态文件.服务器通过websockets向浏览器发送信号.每个页面都注入了一些客户端代码.注入的代码响应信号并刷新浏览器.


sto*_*ter 6

使用python manage.py runserver是最常用的。您必须使用另一个工具,例如: http: //livejs.com/来刷新浏览器本身,因为 Django 确实不知道它。


Har*_*van 5

由于对所有显式刷新感到沮丧,我为 Firefox 和 Chrome 创建了一个浏览器扩展来自动执行此操作。该扩展程序可与您添加到 INSTALLED_APPS 中的应用程序列表中的 Django 应用程序配合使用。您可以在github 存储库中了解更多信息。

尽管该存储库具有完整的源代码,但扩展也可以在相应的网上商店中找到。只需搜索“Django 自动刷新”即可。有了这些,您只需将应用程序复制到我们项目的文件夹中,并通过 INSTALLED_APPS 包含它。我想添加一个 pip 设置脚本,但还没有时间去做。

HTH。如果这听起来像是自我推销,我深表歉意。


小智 5

安装此django应用程序:

pip install django-livesync
Run Code Online (Sandbox Code Playgroud)

在您的django设置文件上,添加以下内容:

INSTALLED_APPS = (
    '...',
    'livesync',
    'django.contrib.staticfiles',
    '...',
)

MIDDLEWARE_CLASSES = (
    'livesync.core.middleware.DjangoLiveSyncMiddleware',
)
Run Code Online (Sandbox Code Playgroud)

如果要使用,请当心在“ django.contrib.staticfiles”之前注册“ livesync”。

现在,只需启动您的开发服务器:

python manage.py runserver
Run Code Online (Sandbox Code Playgroud)

查看此以获取更多详细信息:https : //github.com/fabiogibson/django-livesync