【问题标题】:How to loop dictionary with multiple values in Jinja?如何在 Jinja 中循环具有多个值的字典?
【发布时间】:2018-08-12 23:06:41
【问题描述】:

我有一个这样的字典:{'a': [Object, 0], 'b': [Object, 1] } 其中 object 是具有多个属性的实际对象。我正在尝试检查每个键,以查看数组中的第二个值是 0 还是 1。如果是 1,那么我会显示“Hello”,如果是 0,我会显示“Goodbye " 到目前为止,这是我所拥有的似乎不起作用的内容:

{% for key in follower_list %}
   {% if follower_list[key][1] == 0 %}
        <p>Hello</p>
   {% else %}
         <p>Goodbye</p>
{% endif %}

这里,follower_list 是字典。我的 IDE 出现错误,提示 operator expected where follower_list[key][1] 有没有办法在 Jinja 中执行这种类型的逻辑?

【问题讨论】:

    标签: python django jinja2


    【解决方案1】:

    使用iteritems 遍历您的字典:

    {% for key, value in follower_list.items %}
        {% if value.1 == 0 %}
            <p>Hello</p>
        {% else %}
            <p>Goodbye</p>
    {% endfor %}
    

    检查这个docs

    【讨论】:

    • 嗯,在my_dict.iteritems() 我得到一个无法解析剩余部分:() 来自my_dict.iteritems()
    • 您确定您使用的是 Jinja 的第二个版本吗?
    • @user2896120 检查我的更新。也许你只是使用 django 模板。
    • 我正在使用 Jinja2,但是可以。但是,下一个问题是value[1],它说:Could not parse the rest: '[1]' from 'value[1]'
    • @user2896120 已更新。检查settings.py 中的项目模板设置。猜你有'BACKEND': 'django.template.backends.django.DjangoTemplates'。我完全确定您使用的是 django 模板而不是 Jinja2。如果你想切换到 Jinja2 设置 'Backend'django.template.backends.jinja2.Jinja2 并使用我的第一个解决方案。
    【解决方案2】:

    试试这个方法:

    {% for key, value in follower_list.items() %}
        {% key %}
        {% value %}
    

    这会调用字典上的 items 函数,让您遍历字典的所有键和值。

    【讨论】:

    • 嗯,在 follower_list.items() 中我得到一个无法解析剩余部分:() from follower_list.items()
    • TemplateSyntaxError:遇到未知标签“键”。 Jinja 正在寻找以下标签:'endfor' 出现此错误
    猜你喜欢
    • 2021-08-29
    • 1970-01-01
    • 2021-12-04
    • 1970-01-01
    • 2015-12-23
    • 2016-10-27
    • 1970-01-01
    • 1970-01-01
    • 2016-03-27
    相关资源
    最近更新 更多