如何让 liveserver 渲染 django 模板?

Posted

技术标签:

【中文标题】如何让 liveserver 渲染 django 模板?【英文标题】:How to get liveserver to render django templates? 【发布时间】:2020-10-21 08:29:29 【问题描述】:

我一直在搞一个教程网站,当我尝试打开 Django 模板时,我发现我的 VS Code LiveServer 插件无法正常工作。我应用的 CSS 丢失了(尽管在我的本地开发服务器中一切都正确呈现),并且模板语言代码实际上是打印到屏幕上而不是执行(见下图)。我的 liveserver 插件似乎正在处理 Django 之外的 html 文件。

(1) 现在我右键单击并选择“使用 Liveserver 打开”。这对 Django 来说是错的吗? liveserver 文档建议尝试“访问实际服务器地址:http://localhost/[workspace],而不是 VS Code 扩展的实时服务器地址:http://127.0.0.1:5500/"。我尝试使用文件路径代替 [workspace],但是不走运。我该怎么办?

(2) 我在另一个帖子中看到有人推荐了他们自己的解决方案,here。我不确定应该在哪里运行“./manage.py livereload”命令,但它在命令提示符下不起作用。 './manage.py' 和 'py manage.py' 有什么区别?这个解决方案会比 VS Code 插件更好吗?

【问题讨论】:

【参考方案1】:

对于那些尝试了最佳答案但仍然卡住的人:您必须安装 dj-static 或 whitenoise(如 dj-static github 页面所推荐的那样)来提供静态文件。我注意到它真的很慢。也许这只是我,但我发现它是非常行不通的。我最终编写了一个自动热键脚本来激活我的浏览器然后刷新。至少对我来说,这要快得多。

【讨论】:

【参考方案2】:

我遇到了与您相同的问题,并设法使用您帖子第 (2) 点中包含的链接使其正常工作。你现在可能已经整理好了,但我想我会在这里发帖以防万一。

首先我去控制台运行:

pip install livereload

安装成功。然后我在我的 settings.py 文件中将“livereload”添加到我已安装的应用程序中。比如……

INSTALLED_APPS = [ ... 'livereload', ... ]

然后我进入终端上包含我的 manage.py 文件的目录,然后运行

./manage.py livereload

这为我提供了一个实时更新服务器的链接。以前我一直在使用“python manage.py runserver”运行服务器,所以这是替换该命令。 现在,当我保存在 IDE 中所做的任何更改时,它们会在浏览器上实时更新。 抱歉,为了清楚起见,我没有包含任何屏幕截图,由于某种原因我无法添加。

【讨论】:

对我来说它没有得到我得到的静态文件 404 @alirezaeasazade 你找到解决方案了吗?得到同样的错误【参考方案3】:

我正在学习 Scrimba/VSchool 教程,所以我想知道您是否通过类似的路径遇到了这个问题。 我相信 Live Server 和 Django 不兼容 - 但如果你找到了修复方法,请告诉我。

实时服务器充当您的网络服务器(默认为 5500 端口),在您进行更改时提供文件。 Django 还充当 Web 服务器(默认为 8000 端口),解释 Python 代码,并呈现 Django 模板语言。

不幸的是,据我所知,实时服务器无法执行所有这些 Python 代码,因此所有 Django 模板语言都不会呈现。这包括 Django 用于读取 html 中的 CSS 和 JS 链接的 % load static % 方法。

【讨论】:

我最终得出了同样的结论,但我会睁大眼睛寻找解决办法。似乎有一些基于 php 的框架的解决方法,但还没有 Django。【参考方案4】:

在您的命令行中,您必须通过以下命令运行服务器:

python manage.py runserver

但请确保您位于具有 manage.py 文件的目录中。您无需键入端口。因为您将获得默认端口:8000

【讨论】:

我的开发服务器一直在运行。它加载模板没有问题。还有其他想法吗? 你不介意在上面运行代码.. 上面你没有运行服务器,在这种情况下你运行浏览器就像你在静态 HTML 和 CSS 文件中一样,这是行不通的在 Python 的情况下,您需要运行服务器 不幸的是,我很难理解你,但我确实运行了服务器。我已经使用了命令“python manage.py runserver”。这不是我的问题的解决方案。 你运行哪个端口?默认端口使用端口:8000,因此,如果您通过我发送给您的命令运行服务器,则必须在 URL 字段中写入下一个 URL:127.0.0.1:8000 以查看页面 是的,在使用您发送给我的命令后,我已经在 127.0.0.1:8000 处运行了 url。该网页工作正常,我已经使用了几个月,但它不会重新加载。

以上是关于如何让 liveserver 渲染 django 模板?的主要内容,如果未能解决你的问题,请参考以下文章

在django中渲染模板后如何在我的视图中调用一些逻辑

渲染后如何获取模板(Django)

如何让内置标签“url”工作?

如何更新 django 模板中的渲染变量?

如何在渲染django模板时动态设置表单选择字段的初始值

如何使用 Django 渲染 Vue