如何重新加载 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 中的 AJAX POST 请求后重新加载模板
我在 django 中的静态文件不会被重新加载,除非我每次重新启动电脑时都重命名它们