Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jinja2 有没有办法在Jinja模板的forloop中应用不同的类_Jinja2 - Fatal编程技术网

Jinja2 有没有办法在Jinja模板的forloop中应用不同的类

Jinja2 有没有办法在Jinja模板的forloop中应用不同的类,jinja2,Jinja2,我是金贾的始作俑者。当我想在Jinja forloop中应用不同的样式时,我遇到了一个问题。我在网上搜索过,但找不到解决办法 在python中,我将列表传递给Jinja模板,如下所示: my_list = [ {"Message": "this is sender message", "Des": 1 }, { "Message": "this is receiver message", "Des": 0 } ] ... render_te

我是金贾的始作俑者。当我想在Jinja forloop中应用不同的样式时,我遇到了一个问题。我在网上搜索过,但找不到解决办法

在python中,我将列表传递给Jinja模板,如下所示:

my_list = [
    {"Message": "this is sender message",
     "Des": 1
    },
    { "Message": "this is receiver message",
      "Des": 0
    } ]

...
render_template(
    messages = my_list
    )
在模板中,我想根据message.Des应用不同的样式

{% for message in messages %}
{% if message.Des==1 %}
    <div class="sender_message">
{% else %}
    <div class="receiver_message">
{% endif %}

    <div>
        <img src={{ url_for("static", filename="img/info.jpg") }} width="36px" height="36px">
    </div>
    <div>
        <pre>
            {{message.Message}}
        </pre>
    </div>
    <div class="clear"></div>
    </div>
{% endfor %}
{%用于消息中的消息%}
{%if message.Des==1%}
{%else%}
{%endif%}
{{message.message}
{%endfor%}
但是,由于forloop不支持continue/break,上述代码不起作用


我想知道,有没有一种方法可以实现相同的功能?非常感谢你

您可以根据message.Des值应用不同的样式。使用该变量作为div id值

这是代码

{%用于消息中的消息%}
{%if message.Des==1%}
{%else%}
{%endif%}
{{message.message}
{%endfor%}

我猜您是指else块中的
class=“receiver\u message”
。无论如何,如果else构造与Jinja不支持循环中断有什么关系?谢谢,@makeiteasy。是的,你说得对,应该是你的留言。我的目的是实现一个图表视图,对于发送方消息,文本和图片将通过在css中应用此系统左对齐,对于接收方消息,将右对齐。这应该是一个共同的要求,我想,我想一定有一些方法来做到这一点在金贾,但我只是不知道如何做到这一点。我可能会找到解决办法。我在python代码中执行forloop,将message.Des转换为字符串“sender\u message”或“receiver\u message”,然后将我的\u列表传递给Jinjia。那么就不需要在Jinja模板中执行IF指令。我不确定这是不是正确的方法,但它对我很有效。从我所看到的,你可以做
。没有必要复制重复的部分。
{% for message in messages %}
    {% if message.Des==1 %}
        <div class="sender_message">
    {% else %}
        <div class="receiver_message">
    {% endif %}

        <div>
            <img src={{ url_for("static", filename="img/info.jpg") }} width="36px" height="36px">
        </div>
        <div id={{message.Des}}>
            <pre>
                {{message.Message}}
            </pre>
        </div>
    <div class="clear"></div>
    </div>
{% endfor %}