我想循环Django模板中的include标签,但是我无法嵌套循环include内。周期应该像
include cycle left_align.html right_align.html
我正试图避免创建自定义模板,只是为了保持简单。我想看看是否有人对此有任何建议:
{% for s in sections %}
<section class="{% cycle 'lighter-section' 'cover cover-bg-section' %}">
{% if s.media.values %}
{% include 'web_builder/apple-pie/sections/left_align.html' %}
{% else %}
{% include 'web_builder/apple-pie/sections/center_align.html' %}
{% endif %}
</section>
{% endfor %}
答案 0 :(得分:1)
不幸的是,无法使用cycle
块将with
templatetag的结果分配给变量,但是您可以使用as
关键字将其结果转储到变量中并在任何地方使用希望例如{% cycle 'left_align.html' 'right_align.html' as include_file %}
。但是,这有副作用。
该指令本身也会产生循环结果,尽管它也已注册在变量中。作为解决方法,您可以将其放置在某个HTML元素的data-
属性中,以便使其不显示,并稍后在include
标签内的完整模板路径串联中使用该变量。>
完整示例:
{% for i in "xxxxxxxxxxxxxxxxx" %}
<section data-include-file="{% cycle 'left_align.html' 'right_align.html' as include_file %}">
{% include 'web_builder/apple-pie/sections/'|add:include_file %}
</section>
{% endfor %}
但是,由于它看起来丑陋且复杂,因此我也考虑为其编写自定义包含标签。