Jinja2包含批处理过滤器

时间:2018-10-14 12:45:10

标签: python flask jinja2

我正在尝试在for循环中包含一个应用了批处理过滤器的模板 但是我不知道如何/是否可以为过滤器返回的列表中的每个对象添加

我看到人们在线从循环中选择,就像这样:

{% for result in results %}
        <tr>
            <td>{{ result[0] }}</td>
            <td>{{ result[1] }}</td>
            <td>{{ result[2] }}</td>
        </tr>
{% endfor %}

我只是不知道如何在列表中包括每个 我的代码如下:

{% for post in posts | batch(2, '&nbsp;') %}
        <tr>
            <td style="Width: 10%; height: auto">
                {% include '_post.html' %}
            </td>
        </tr>
{% endfor %}

1 个答案:

答案 0 :(得分:0)

循环/过滤器构造中的模板的

Including部分非常好。

以您的示例为基础,为每个批次使用部分模板构建帖子表,您需要:

包含循环/过滤器的模板,其中包含部分代码:

<table>
    <thead><tr>
        <th>Title</th>
        <th>Author</th>
        <th>Title</th>
        <th>Author</th>
    </tr></thead>
    <tbody>
    {% for row in posts | batch(2) %}
        {% include "row.html" %}
    {% endfor %}
    </tbody>
</table>

部分模板“ row.html”:

<tr>
    <td>{{ row[0].title }}</td>
    <td>{{ row[0].author }}</td>
    <td>{{ row[1].title }}</td>
    <td>{{ row[1].author }}</td>
</tr>

另一个选择是再次遍历批处理分区并使用更简单的部分模板:

模板:

<table>
    <thead><tr>
        <th>Title</th>
        <th>Author</th>
        <th>Title</th>
        <th>Author</th>
    </tr></thead>
    <tbody>
    {% for row in posts | batch(2) %}
        <tr>
        {% for col in row  %}
            {% include "col.html" %}
        {% endfor %}
        </tr>
    {% endfor %}
    </tbody>
</table>

和“ col.html”:

<td>{{ col.title }}</td>
<td>{{ col.author }}</td>

如果它不起作用,请仔细检查变量名称,部分名称等。