如何从Jinja列表中准确获取一个元素?

时间:2018-07-15 19:06:40

标签: python html django jinja2

因此,我在views.py中传递了一个带有目录的渲染作为参数。像这样:

def foo(request):
return render(request, 'webapp/foo.html', {'key': ['one', 'two', 'three']})

现在,我想在HTML文件中使用Jinja从目录值中获取一个元素,让我们先说。 我所知道的是如何使用for循环获取所有元素:

{% block content %}
   {% for val in key %}
      <p> {{ val }} </p>
   {% endfor %}
{% endblock %}

我的问题是是否有类似的东西?

{% block content %}
   <p> {{ key[0] }} </p>
{% endblock %}

2 个答案:

答案 0 :(得分:3)

。您可以在 Jinja 中使用documentation says。尽管使用不同的语法可以实现 ,但在Django模板中不支持这样的索引。您可以使用索引符号从元素访问键,因此:

{{ key[0] }}

但是实际上,在Django模板中,您还可以使用以下命令执行索引查找:

{{ key.0 }}

答案 1 :(得分:0)

你可以间接索引列表

使用split函数可以将字符串变量拆分成一个列表(它可以包含相似的值,set是为了赋值)。我在官方文档中没有找到这个函数,但它的工作原理类似于普通的 Python。这些项目可以通过索引调用,在循环中使用,或者像戴夫建议的那样,如果你知道这些值,它可以像元组一样设置变量。

{% set list1 = variable1.split(';') %} 草是 {{ list1[0] }} 船是 {{ list1[1] }} 或

{% set list1 = variable1.split(';') %}
{% for item in list1 %}
    <p>{{ item }}<p/>
{% endfor %} 

{% set item1, item2 = variable1.split(';') %}
The grass is {{ item1 }} and the boat is {{ item2 }}