【问题标题】:Appending string to dictionary values using jinja template使用 jinja 模板将字符串附加到字典值
【发布时间】:2020-10-14 22:49:47
【问题描述】:

我有以下代码用于使用 jinja 模板访问字典中的值

names={'ant':['abc',2456789,28-02-1991]}
{% for key,value in names.items %}
            {% for val in value %}
              <p class="lead">{{ val }} </p>
            {% endfor %}
{% endfor %}

对于每个值,打印出来的我想附加一个字符串。我的值是“abc”、“2456789”、“28-02-1991”。我想要以下输出:

Name:abc
Id:2456789
Date: 28-02-1991

我怎样才能使用 jinja 模板呢?

【问题讨论】:

  • 什么是val?一份清单?
  • 你能提供一个'name.items'的例子吗?

标签: javascript python-3.x django jinja2


【解决方案1】:

您可以像这样将它与您当前的数据结构一起使用。

{% for key, value in names.items %}
    <p class="lead">Name: {{ value.0 }}</p>
    <p class="lead">Id: {{ value.1 }}</p>
    <p class="lead">Date: {{ value.2 }}</p>
{% endfor %}

但是如果将你的数据结构改成这样会更易读:

my_dict = {
    'ant': {
        'id': 2,
        'name': 'abc',
        'date' : datetime.now()
    }
}

那么您的模板将如下所示:

{% for key, person in my_dict.items %}
    <p class="lead">Id: {{ person.id }} </p>
    <p class="lead">Name: {{ person.name }} </p>
    <p class="lead">Date: {{ person.date }} </p>
{% endfor %}

【讨论】:

  • 其实我的值是一个列表。所以我得再循环一次。
【解决方案2】:

Jinja-2你可以在变量中下标

{% for key,vals in names.items %}
    <p class="lead">Name: {{ vals[0] }}</br>
    Id: {{ vals[1] }}</br>
    Date: {{ vals[2] }}</p>
{% endfor %}

【讨论】:

  • 索引对我不起作用,因为我使用的是 Django(我认为这可能是一个原因)。但我使用了 forloop 计数器,它可以工作
  • @SriTest: 但是你用 jinja 标记它?
猜你喜欢
  • 2022-11-28
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
  • 2014-07-05
  • 1970-01-01
  • 1970-01-01
  • 2020-11-18
  • 2023-02-24
相关资源
最近更新 更多