【问题标题】:Jinja table, when column == value then add div to specific columnJinja 表,当列 == 值时,将 div 添加到特定列
【发布时间】:2021-11-18 03:01:06
【问题描述】:

我有一个带有 jinja 表的烧瓶应用程序,当该行符合条件时,其中一列的值 = 1。

对于该列中存在 1 的每一行,我想用一个圆圈替换它,例如:

如何将它添加到我的 jinja 表中?

<table>
        <thead>

          <tr>
            {% for col in column_names %}
            <th>
            
              {{col}}
             
            </th>
            {% endfor %}
          </tr>

        </thead>
        <tbody>
          {% for row in row_data %}
          <tr>
            {% for col, row_ in zip(column_names, row) %}

  {% if loop.index == 1 %} 
            <td> 

IF  {{ row[16] }} == 1 then <div class="circle" style="float: left;">LB</div> 
else ''
end 

 {{row_}}</td>
{% else %}
            <td>{{row_}}</td>

 {% endif %}

            {% endfor %}
          </tr>
          {% endfor %}

         
        </tbody>
  
      </table>

我想出现在该单元格中的 div 的 HTML/CSS 代码

.circle
    {
    width:20px;
    height:20px;
    border-radius:10px;
    font-size:8px;
    color:#fff;
    line-height:20px;
    text-align:center;
    background:#000
    }

<div class="circle" style="float: left;">LB</div> 

【问题讨论】:

    标签: javascript python flask jinja2


    【解决方案1】:

    解决方案

    试试下面的。

    jinja2 中的一行 if-else 语句如下所示:

    {{ OUTPUT_WHEN_TRUE if condition else OUTPUT_WHEN_FLASE }}
    

    因此,在您的情况下,每个 &lt;td&gt;&lt;/td&gt;(其中 loop.index == 1 位于内部循环上)的代码如下所示:

    {{ '<div class="circle" style="float: left;">LB</div>' if row[16] == 1 else '' }} {{ row_ }}
    

    代码

    <table>
        <thead>
    
            <tr>
            {% for col in column_names %}
            <th>
            
                {{col}}
                
            </th>
            {% endfor %}
            </tr>
    
        </thead>
        <tbody>
            {% for row in row_data %}
            {% set row_loop = loop %}
            <tr>
            {% for col, row_ in zip(column_names, row) %}
            {% set col_loop = loop %}
    
            {# Choose which loop: row or col you are referring to #} 
            {% if col_loop.index == 1 %} 
            <td> 
    
                {{ '<div class="circle" style="float: left;">LB</div>' if row[16] == 1 else '' }} {{ row_ }}
    
            </td>
            {% else %}
                
                <td>{{ row_ }}</td>
    
            {% endif %}
    
            {% endfor %}
            </tr>
            {% endfor %}
         
        </tbody>
      
    </table>
    

    参考文献

    【讨论】:

    • 我收到jinja2.exceptions.TemplateSyntaxError: tag name expected 错误
    • @mikelowry 您是否已经测试了其余代码?如果没有 &lt;div class="circle...&gt;LB&lt;/div&gt; 部分,它是否工作?
    • 是的,直到我添加 {% '&lt;div class="circle" style="float: left;"&gt;LB&lt;/div&gt;' if row[16] == 1 else '' %} {{ row_ }}
    • 所以我使用 ``` {% if row[16] == '1' %}
      LB {% else %} {% endif %} ``` 谢谢!你把我引向了正确的方向!
    • 太棒了!我才意识到我的答案有错别字。一行if-else 需要{{ ... }} 而不是{% ... %}
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签