在Django模板中显示列表

时间:2018-03-03 23:19:39

标签: python django django-templates

我有一个元组列表,如下所示:

answer_guess_list = [('A',), ('B', 'C',), ('A', 'B', 'C', 'D',)]

在我的模板中,我有一个名称相同的模板变量。

{% for guess_list in answer_guess_list %}

        <p>
            {% for guess_value in guess_list %}
                {{ guess_value }}, # Notice the comma (,)
            {% endfor %}
        </p>

{% empty %}
    <p>Nothing to show.</p>
{% endfor %}

它显示如下列表:

A,
B, C, 
A, B, C, D,

我不想使用终端逗号,而是将其显示为:

A
B, C
A, B, C, D

我不知道如何实现这一目标。 你能帮忙吗?

2 个答案:

答案 0 :(得分:1)

这是一种方法:

{% for guess_list in answer_guess_list %}
    <p>
        {% for guess_value in guess_list %}
            {{ guess_value }}{% if forloop.counter < guess_list|length %}, {% endif %}
        {% endfor %}
    </p>
{% empty %}
    <p>Nothing to show.</p>
{% endfor %}

或者您也可以使用内置模板过滤器join

{% for guess_list in answer_guess_list %}
    <p>
        {{ guess_list|join:", " }}
    </p>
{% empty %}
    <p>Nothing to show.</p>
{% endfor %}

答案 1 :(得分:0)

Here是模板标签的文档,下面是它自己的标签。

@register.filter(name="my_filter")
def fltr(tpl):
    return ','.join([str(i) for i in tpl])

按照文档中的说明注册此标记后,您可以将其用作:

    <p>
        {% for guess_value in guess_list %}
            {{ guess_value|my_filter }},
        {% endfor %}
    </p>