如何在静态文件中使用 django 模板语法

Posted

技术标签:

【中文标题】如何在静态文件中使用 django 模板语法【英文标题】:How to use django template syntax in static files 【发布时间】:2019-06-26 22:54:23 【问题描述】:

在 Django 模板中包含静态文件有很多可用的文档。但是,我找不到任何关于如何在静态文件中使用 Django 模板语法的信息。

我有一个 html 文件,其中包含这样的标签之间的 javascript

var nodes = JSON.parse('nodes|safe');

我现在将所有 javascript 移动到我正在服务的静态 .js 文件中。它包含在 HTML 文件中,如下所示:

<script src="% static 'citator/analysis.js' %" type="text/javascript"></script>

除了 .js 文件中使用 Django 模板语法的部分之外,一切运行良好。

我的问题是,如果 javascript 不是直接在模板中,而是作为静态文件并导入,有没有办法在 javascript 中使用 Django 模板语法?还是我必须在模板中获取上下文数据,然后将其传递给静态文件中的函数?

【问题讨论】:

【参考方案1】:

不幸的是,没有任何 Django 功能可以让您直接执行此操作。阻止这种情况的根本问题是上下文被传递给视图中render() 函数中提到的模板(或任何其他行为相同的函数,例如render_to-response())。这里最好的选择是在模板文件中使用内联 js。 可以理解,为了保持代码干净,您不希望模板中包含 js 函数。所以,像这样获取你想要的数据:

<script>
    var nodes = JSON.parse('nodes|safe');
</script>

在此代码之后导入您的静态 js 文件,然后您就可以开始了,保持您的代码干净和模块化。

【讨论】:

好的。谢谢你!

以上是关于如何在静态文件中使用 django 模板语法的主要内容,如果未能解决你的问题,请参考以下文章

Django框架—— 模板层:模板导入模板继承静态文件

Django——模板路径 模板变量 常用过滤器 静态文件的使用

如何在 django 2.2 的多个应用程序中使用其静态文件管理多个模板?

如何在 django 模板脚本中传递静态 js 文件?

Django框架之模板继承和静态文件配置

django——模板层