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

时间:2013-09-30 12:49:20

标签: python django web-applications livereload

如何自动监视.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开发人员中这样做的推荐方法是什么?

我找不到任何详细,全面的文档 - 只有不完整的讨论herethere

5 个答案:

答案 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 时,它​​对我有用。