31

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

我启动我的 Django 服务器

foreman start

这是我的 Procfile:

web: newrelic-admin run-program gunicorn app.wsgi

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

python manage.py runserver

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

我找不到任何详细、全面的文档——这里那里只有不完整的讨论。

4

6 回答 6

32

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

我在https://stackoverflow.com/a/36961244/2950621上发布了一个更广泛的答案

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

于 2016-05-01T16:02:15.460 回答
14

安装这个 django 应用程序:

pip install django-livesync

在您的 django 设置文件中添加如下内容:

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

MIDDLEWARE_CLASSES = (
    'livesync.core.middleware.DjangoLiveSyncMiddleware',
)

如果您正在使用它,请注意在“django.contrib.staticfiles”之前注册“livesync”。

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

python manage.py runserver

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

于 2017-04-28T22:03:59.773 回答
5

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

于 2013-10-01T18:49:36.063 回答
4

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

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

HTH。如果这听起来像是自我推销,请道歉。

于 2015-11-04T09:54:33.347 回答
1

我在这里尝试了几个答案。但是浏览器似乎没有显示最近的代码更改。当我以隐身模式打开 Chrome 时,它​​对我有用。

于 2021-05-02T09:43:38.553 回答
0

如果您使用的是 Visual Studio 代码,那么您可以使用python manage.py runserver和使用 VS 代码的自动保存功能。

在此处输入图像描述

使用此功能,每当您更改代码时,它都会保存所有内容并触发服务器重新加载。

于 2021-10-29T16:26:32.990 回答