我有以下模板“base.html”
{% set list_of_ids = ['id1', 'id2', 'id3'] %}
{% for id in list_of_ids %}
<div class="content">
{% block id %}
{% endblock %}
</div>
{% endfor %}
是否可以在另一个模板“id1.html”中执行此操作
{% extends "base.html" %}
{% block id1 %}
<p>This is my content for id1 block! Different from id2 and id3 blocks</p>
{% endblock %}
答案 0 :(得分:1)
这是不可能的。块名称已经是名称,您无法从变量中为它们分配名称。
include
可以接受变量。解决方案是包含不同的模板名称并定义模板本身,而不是模板中的块。
base.html
:
{% for id in ids %}
{% include 'id' ~ id ~ '.html' %}
{% endfor %}
id1.html
:
<p>id1 content</p>
答案 1 :(得分:0)
它一文不值,但您可以在“树枝”(Jinja2引擎的PHP版本)中完成。
{% for block_name in blocks %}
{{ block(block_name) }}
{%endfor %}