如何重新加载 Django 模板?

Posted

技术标签:

【中文标题】如何重新加载 Django 模板?【英文标题】:How to livereload Django templates? 【发布时间】:2013-10-05 02:46:26 【问题描述】:

我怎样才能livereloadDjango templates?

【问题讨论】:

@jthill,我正在寻找建设性和实用的答案和解决方案。 Google 搜索结果没有提供它们。 好吧,让我换个说法:到目前为止,您发现的最好的东西是什么?展示这一点,并说出你卡在哪里。现在,“建设性和实用的答案”最好拼写为“有人根据我的具体需求研究和撰写文章,我拒绝说明”。 嗨@jthill,“livereload Django 模板”意味着当我更改我的 Django 模板时,更改应该自动传播到浏览器,这样我就不必自己刷新它。我问这个问题是因为我没有从 Google/DuckDuckGo 搜索结果中看到任何此类解决方案。我个人没有尝试让它工作。你能提供什么帮助? 【参考方案1】:

我通过using Grunt and a livereload browser extension找到了一个非常简单的解决方案。

【讨论】:

【参考方案2】:

我找到了一个易于设置且运行良好的 Python 原生解决方案,Python LiveReload (doc)。

pip install livereload
livereload /path/to/monitor

您仍然需要安装browser plugin。该插件和 LiveReload 使用端口35729 进行对话(可自定义),但您需要将浏览器指向通过 runserver 指定的端口。例如:

python manage.py runserver example.com:8000

在这种情况下,实时重新加载的 url 是 http://example.com:8000,当您更改模板时,页面会自动刷新。

最后一点,Python live reload 也可以通过编程方式使用并支持 wsgi 应用程序。

【讨论】:

我在开发环境中设置了 django-live-reload,不需要浏览器插件。 django-live-reload 应该基于 python livereload 包,因此可能不再需要浏览器插件。他们使用如今必须使用浏览器内置技术的 websockets?【参考方案3】:

你可以像这样使用python-livereload:

pip install livereload
livereload project/static

为了完成这项工作,请将此 sn-p 添加到您的 base.html:

<script type="text/javascript" src="http://127.0.0.1:35729/livereload.js"></script>

然后运行./manage.py runserver,它应该可以工作了。

【讨论】:

【参考方案4】:

我维护包django-livereload-server,它添加了livereload javascript并以简单的django方式提供了一个livereload服务器。您需要做的就是:

pip install django-livereload-server'livereload' 添加到INSTALLED_APPS'livereload.middleware.LiveReloadScript' 添加到MIDDLEWARE_CLASSES 使用 ./manage.py livereload 启动 livereload 服务器/文件观察器。

【讨论】:

我遇到了一个问题,它在更新时显示 0 个观察者。为了弄清楚这一点,我在一个单独的端口上运行 ./manage.py livereload,我应该能够将浏览器指向 runserver 路径(默认为 127.0.0.1:8000),它应该会自动更新,对吗?我试图转到 livereload 端口只是为了确保但收到错误 404。如何将浏览器添加为观察者? @DavidTorrey 嘿,我也跟着这个,我得到一个 404 错误,你是怎么解决的? @HammiCloud 我发现它没有正确检查目录。我使用绝对路径只是为了确保,但它看起来像:“./manage.py livereload path/to/folder 之后你转到你在 django 中设置的 ip/port(不是 livereload)它应该自动更新

以上是关于如何重新加载 Django 模板?的主要内容,如果未能解决你的问题,请参考以下文章

单击指向另一个模板的链接时,Django 模板只会重新加载

在 Django 中的 AJAX POST 请求后重新加载模板

如何在 django 模板中重新组合?

我在 django 中的静态文件不会被重新加载,除非我每次重新启动电脑时都重命名它们

Django:如何重新分发包含可扩展 HTML 模板的项目/应用程序?

如何替换重新“。”在 Django 模板 url 标签中