【问题标题】:How to use a variable from jinja2 in a for block如何在 for 块中使用 jinja2 中的变量
【发布时间】:2021-01-02 13:16:48
【问题描述】:

我正在尝试在 for 块中使用带有变量的 Jinja2 作为字典参数。

{% for x in dict_one %}
    {% with id=x.id %}
        <tr>
        <th scope="row">{{x.id}}</th>
        <td>
        {% for a, b in dict_two.id.items %}
            Key: {{a}} Value {{b}}
        {% endfor %}
         </td>
        </tr>
    {% endwith %}
{% endfor %}

在这种情况下,我的页面不显示任何数据。如果我将此行硬编码,将 id 更改为 11(从 x.id 显示在我的表中的值),它可以工作。

{% for a, b in dict_two.11.items %}

该解决方案应该可以在访问字典项目时使用 with 变量。

【问题讨论】:

  • 显示views.py的代码
  • 没什么大不了的,dict_one是一个QuerySet,每个对象都有字段id,dict_two就像:{11: {'Item_ABC': 2}, 12: {'another_item': 23}}。我有兴趣显示查询集的所有字段,然后显示与第二个字典中的 id 匹配的字段(带有项目的那个)
  • @learner123 请尝试在 view.py 中处理嵌套的 for 循环和 with 语句

标签: django django-models django-views django-templates jinja2


【解决方案1】:

解决方案是从视图中将第二个字典添加到我的第一个字典中,然后像这样调用。我仍然没有设法在 for 块中包含 jinja 变量。

{% for a, b in dict_one.dict_two.items %}

【讨论】:

    【解决方案2】:
    {% for x in dict_one %}
        <tr>
        <th scope="row">{{x.id}}</th>
        <td>
        {% for a, b in x.items %}
            Key: {{a}} Value {{b}}
        {% endfor %}
         </td>
        </tr>
    {% endfor %}
    

    【讨论】:

    • 虽然此代码 sn-p 可能是解决方案,但 including an explanation 确实有助于提高您的帖子质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。
    • 这不是我要找的,因为你 x 是 dict_one 中的一个对象,但我必须从 dict_one 访问与我的 x.id 对应的项目
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-02
    • 2018-03-19
    • 2015-12-08
    • 2019-11-04
    • 1970-01-01
    • 2021-11-08
    相关资源
    最近更新 更多