【问题标题】:How to get value from key when sending a dictionary to jinja将字典发送到 jinja 时如何从键中获取值
【发布时间】:2019-07-06 15:53:54
【问题描述】:

我将我的字典 - 内容 - 发送到一个看起来像这样的模板。里面的内容是多个字典。其中一个名为 like_dict,如下所示:{1:18} {2:14} {3:15} 另一个名为 info 保存我的用户 ID。我使用此代码对其进行排序:

{% for x in info %}
{% if x.id in like_dict %}
<p> the value is: {{ like_dict.x.id }} </p>
{% endif %}
{% endfor %} 

一切似乎都在工作,除了段落标签中的部分。当我用我的 ID 号替换 x.id 时(如下所示: like_dict.1 ),它会打印 '18' 就好了。当我在示例中保留它时(like_dict.x.id),它会在 like_dict 中找到 x.id,但只打印“值是:”而不说明字典值。当我尝试这样做时 - like_dict[1] - 使用括号时出现错误。谁能指导我在密钥与我的 ID 匹配时如何只打印值?

【问题讨论】:

    标签: python django jinja2


    【解决方案1】:

    您应该使用方括号来访问字典的变量键的值:

    <p> the value is: {{ like_dict[x.id] }} </p>
    

    【讨论】:

    • 我就是这么想的。但它给了我这个语法错误:Could not parse the rest: '[x.id]' from 'like_dict[x.id]'
    • 我不认为你在使用 Jinja2。使用默认的 Django 模板语言,它不支持使用方括号来访问 dict 值。重新配置你的 Django 以使用 Jinja2。
    • 谢谢。无论如何用 Django 模板语言来做?
    • 不客气。不幸的是,我认为 Django 模板语言没有办法做到这一点,这就是为什么我不得不建议你改用 Jinja2 作为 Django 的渲染引擎。
    • 这结束了工作:) 仅供您自己将来参考! {% for r, b in like_dict.items %} {% if x.id == r %}

      {{ b }}

      {% endif %} {% endfor %}
    【解决方案2】:

    在您的情况下,我会尝试使用“with”关键字将 x.id 存储在模板内的变量中。

      {% for x in info %}
        {% for k, v in x.items %}
          {% if k == 'id' %}
            {% if v in like_dict %}
              {% for key, value in like_dict.items %}
                {% if key == v %}
                  <p>The value is: {{ value }}</p>
                {% endif %}
              {% endfor %}
            {% endif %}
          {% endif %}
        {% endfor %}
      {% endfor %}
    

    警告:这是一个非常肮脏的解决方案。

    【讨论】:

    • 这也是空白。
    • 好的,所以我更改了答案,提供了一个非常肮脏的解决方案。也许更好的解决方案是使用自定义 django 模板过滤器。查看此帖子以获取更多信息:stackoverflow.com/questions/2894365/…
    • 我通过在 for 循环中将 .items 添加到字典的末尾来修复它。非常感谢您的帮助!: {% for r, b in like_dict.items %} {% if x.id == r %}

      {{ b }}

      {% endif %} {% endfor %}
    • 不客气。很高兴知道您的工作正常!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-28
    • 2015-09-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多