首页 > 解决方案 > Django 模板。有什么方法可以将 {{ }} 嵌套在 {% %} 中?

问题描述

我正在使用 Django 模板。我想将一个名为js_files的变量传递给我的模板,它是我想要添加到 HTML 末尾的 JavaScript 文件列表。例如,这是一个示例js_files数组:

js_files = ['fancy_dialog.js', 'animate_everything.js']  

在我的 Django 模板中,我希望能够执行以下操作:

{% for js_file in js_files %}
<script src="{% static '{{ js_file | safe }}' %}"></script>
{% endfor %}

这就是我得到的:

<script src="/static/%7B%7B%20js_file%20%7C%20safe_file%20%7D%7D"></script>
<script src="/static/%7B%7B%20js_file%20%7C%20safe_file%20%7D%7D"></script>

这就是我想要的:

<script src="/static/fancy_dialog.js"></script>
<script src="/static/animate_everything.js"></script>

语法“{{ js_file | safe }}”正是我想要的。但是我不能用“{% static 'JS-FILE-VARIABLE-HERE' %}”概括地包装那个值。它不筑巢。无论如何要这样做?

标签: pythondjangotemplates

解决方案


您当然可以在模板标签中使用模板上下文变量(当然,那些被编写为接受它们的变量,但大多数情况下都是如此),您只需直接传递变量名称 - 不带引号,也不带 contextvar{{ }}语法。在你的情况下,这只是一个问题:

{% for js_file in js_files %}
    <script src="{% static js_file %}"></script>
{% endfor %}

推荐阅读