jinja2 烧瓶:在迭代时使用 rowspan 两次

约翰尼·梅茨

我通过烧瓶将以下列表传递给 Jinja2 模板:

yrs = [2016, 2017]
months = [['June'], ['January', 'February']]
names = [[['John', 'Mike']], [['Sara'], ['Steph', 'James']]]

我正在尝试制作一个看起来像这样的表格:https : //jsfiddle.net/46qqfef5/4/

这是我为实现这一目标而编写的不成功的 Jinja2 代码:

<div class="table-responsive">
  <table class="table table-bordered">
    <thead>
      <tr>
        <th>Year</th>
        <th>Month</th>
        <th>Name</th>
      </tr>
    </thead>
    <tbody>
      {% for yr_index in range(yrs | count) %}
        {% for month_index in range(months[yr_index] | count) %}
          {% for name_index in range(names[yr_index][month_index] | count) %}
            <tr>
              {% if loop.first %}
                {% if loop.first %}
                  <td rowspan="{{ names[yr_index] | count }}">{{ yrs[yrs_index] }}</td>
                {% endif %}
              <td rowspan="{{ names[yr_index][month_index] | count }}">{{ months[yr_index][month_index] }}</td>
              {% endif %}
              <td>{{ names[yr_index][month_index][name_index] }}</td>
            </tr>
        {% endfor %}
      {% endfor %}
    </tbody>
  </table>
<div>

所以我基本上只是试图将这些列表解压缩到一个有组织的表格中,但是我在rowspan属性方面遇到了很多麻烦任何提示都将不胜感激,即使它与更改 python 列表的结构有关。

菲利普·邹

先试试这个(没有测试)。似乎您滥用了loop.first(您有嵌套循环,您不能依赖loop.first实际)。而且您还需要names[yr_index]在检索计数之前展平列表。

考虑阅读这个:http : //jinja.pocoo.org/docs/dev/tricks/#accessing-the-parent-loop

<div class="table-responsive">
  <table class="table table-bordered">
    <thead>
      <tr>
        <th>Year</th>
        <th>Month</th>
        <th>Name</th>
      </tr>
    </thead>
    <tbody>
      {% for yr in yrs %}
        {% set yr_loop = loop %}
        {% for month in months[loop.index0] %}
          {% set month_loop = loop %}
          {% for name in names[yr_loop.index0][loop.index0] %}
            <tr>
              {% if loop.first %}
                {% if month_loop.first %}
                  <td rowspan="{{ names[yr_loop.index0]|sum(start=[])|count }}">{{ yr }}</td>
                {% endif %}
                <td rowspan="{{ loop.length }}">{{ month }}</td>
              {% endif %}
              <td>{{ name }}</td>
            </tr>
        {% endfor %}
      {% endfor %}
    </tbody>
  </table>
<div>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Ansible / Jinja2模板:for循环运行两次

来自分类Dev

在jinja2中,如何两次包含相同的模板,但传递不同的变量

来自分类Dev

在jinja2中,如何两次包含相同的模板,但要传递不同的变量

来自分类Dev

Angular 2-刷新时模块加载两次

来自分类Dev

使用Yii 2提交两次Ajax表单

来自分类Dev

有时两次执行init.d / rc2.d脚本两次

来自分类Dev

Unicode 错误烧瓶 jinja2

来自分类Dev

jinja2烧瓶逃逸jinja2-highlight

来自分类Dev

两次使用InputStreamReader

来自分类Dev

php使用两次

来自分类Dev

如何使用Jinja2模板在烧瓶中解码

来自分类Dev

为什么在使用Oauth2时需要两次指定重定向uri

来自分类Dev

为什么在使用Oauth2时需要两次指定重定向uri

来自分类Dev

Ansible Jinja2模板迭代遍历

来自分类Dev

提交按钮混乱并两次发送请求(使用烧瓶)

来自分类Dev

可以在加载时单击“按钮1”,然后需要单击“按钮2”两次。然后,还需要单击两次按钮#1

来自分类Dev

两次迭代生产线

来自分类Dev

在HashMap Java上迭代两次

来自分类Dev

独立的if语句被迭代两次

来自分类Dev

迭代枚举对象两次

来自分类Dev

使用Jinja2的HTML模板

来自分类Dev

使用 Jinja2 模板循环主机

来自分类Dev

在 Jinja2 中使用 .get() 吗?

来自分类Dev

concat字符串并使用jinja2进行迭代

来自分类Dev

在python上迭代两次时出错

来自分类Dev

创建2个可运行的JAR,它们使用相同的库而无需两次

来自分类Dev

单击下个月后,jQuery Datepicker打开两次(使用2个Datepickers)

来自分类Dev

如何确保每种2种随机颜色都使用两次?

来自分类Dev

使用ggsave(ggplot2)将ggplot用不同的文件格式保存两次

Related 相关文章

热门标签

归档