【问题标题】:how to fill items into two columns in Jinja2 template如何在Jinja2模板中将项目填充到两列
【发布时间】:2018-07-20 05:31:13
【问题描述】:

我有一个电话听写列表,我想把它分成 2 列。我有一些解决方案,但它看起来很脏。什么是正确和最简单的方法?

我的解决方案在这里:

myphones 字典在这里:

    myphones = [
{'number':'13888888881',
'fee' = '1'},


{'number':'13888888882',
'fee' = '1'},

{'number':'13888888883',
'fee' = '1'},

{'number':'13888888884',
'fee' = '1'},

{'number':'13888888885',
'fee' = '1'},

{'number':'13888888886',
'fee' = '1'},
]

在模板中: 我写:

<pre>

{% for phone in myphones %}
<tr>
  <td>
    {{phone.number}}
  </td>
  <td>
    {{phone.fee}}
  </td>

  <td>
    {{phone.number}}
  </td>
  <td>
    {{phone.fee}}
  </td>
</tr>
{% endfor %}
</pre>

是这样的:

【问题讨论】:

  • 您也可以使用命名元组来存储数据。
  • 你能举个例子吗?谢谢
  • docs.python.org/3/library/… 你可以在这里阅读它们。它基本上允许您创建一个类。随着代码复杂性的增加,这种存储数据的 dict 表示法可能会变得有点混乱,我个人认为命名元组会使代码更干净。这当然是你可能想要研究的东西,如果不是这种情况,但你以后可能会发现它有用。如果它只是像这样的一个键值对数据,dict很棒!

标签: python html flask jinja2


【解决方案1】:

试试:

{% for i in range(0, ((myphones|length)/2)|int, 2) %}
    <tr>
      <td>
        {{myphone[i].number}}
      </td>
      <td>
        {{myphone[i].fee}}
      </td>
      {% if (i+1) <= (myphone|length-1)%}
      <td>
        {{myphone[i+1].number}}
      </td>
      <td>
        {{myphone[i+1].fee}}
      </td>
      {% endif %}
    </tr>
 {% endfor %}

【讨论】:

  • 如果len(myphtones) 是奇数,它将引发OutOfIndex
  • myphones|length)/2|round is float type TypeError: 'float' object cannot be Explained as an integer
  • @Theodoros Vasileiadis,在 python3 中,{% for i in range((myphones|length)/2|round) %} 有 TypeError。像这样:'float' 对象不能被解释为整数
  • 查看我的更新答案。也许强制转换为 int 就可以了。
  • 太好了,那就把它标记为这个问题的答案。很高兴我能帮上忙。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-27
  • 1970-01-01
相关资源
最近更新 更多