python - 在 Jinja2 模板中将项目均匀地分成列

标签 python flask jinja2

我有一个可变的城市名称列表,我想将其平均分成 4 列。我有一些解决方案,但它看起来不知所措且肮脏。最好和最简单的方法是什么?

我的解决方案在这里:

{% set cities_in_column = cities|length/4|int %}
{% set step=0 %}
<div class="four columns">
    {% for city in cities|sort %}
        {% if step > cities_in_column %}
            {% set step = 0 %}
            </div>
            <div class="four columns">
        {% endif %}
        <h5><a href="/city/{{ city.url }}">{{ city.name }}</a> <span style="float:right;">({{ city.users_count }})</span></h5>
        {% set step=step + 1 %}
    {% endfor %}
</div>

最佳答案

您正在寻找 slices过滤器:

{% for column in cities | sort | slice(4) -%}
<div class="four columns">
    {%- for city in column -%}
    <h5><a href="/city/{{ city.url}}">{{ city.name }}</a>
    <span style="float:right;">({{ city.users_count }})</span></h5>
    {%- endfor -%}
</div>
{%- endfor %}

还有一个对slices的补充称为 batch提供 n 的运行(而不是将可迭代对象拆分为 n 组)。

关于python - 在 Jinja2 模板中将项目均匀地分成列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11079690/

相关文章:

python - 您如何在 Google App Engine 项目中查询 Google App Domain 中的用户集?

python - 使用 Pandas 读取 CSV 文件时左对齐标题

python - 使用 IDLE 运行 Python PyUnit 单元测试

python - Jinja2:使用 pandas 数据框或字符串变量

flask - 如何在包含的文件中使用宏

python - pytest 是否有类似 google test 的非致命 EXPECT_* 行为?

JavaScript CSS 模态未显示正确的信息

flask - 如何修复: "Origin <localhost> is not allowed by Access-Control-Allow-Origin." -- with flask_cors

python - Flask View 显示 400 错误,而不是带有表单的模板

python - 在 jinja2 循环中对 dict 的 dict 进行排序