Python 在django模板中显示列表

Python 在django模板中显示列表,python,django,django-templates,Python,Django,Django Templates,我有一个元组列表,看起来如下所示: answer_guess_list = [('A',), ('B', 'C',), ('A', 'B', 'C', 'D',)] A, B, C, A, B, C, D, 在我的模板中,我有一个同名的模板变量 {% for guess_list in answer_guess_list %} <p> {% for guess_value in guess_list %}

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

answer_guess_list = [('A',), ('B', 'C',), ('A', 'B', 'C', 'D',)]
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
我不知道如何做到这一点。 您能帮忙吗?

是模板标签的文档,下面是标签本身

@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>

{guess_列表%中的guess_值为%0}
{{guess_value}my_filter},
{%endfor%}


这是一种方法:

{% 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 %}
{答案中的猜测列表%}

{guess_列表%中的guess_值为%0}
{{guess_value}{%if-forloop.counter
{%empty%}
没什么可展示的

{%endfor%}
或者也可以使用内置的模板过滤器:

{答案中的猜测列表%}

{{guess_list}加入:“,”}

{%empty%} 没什么可展示的

{%endfor%}
模板标签中有一个内置选项,名为
foorloop.last
。只需将代码更改为:

{% for guess_list in answer_guess_list %}
<p>
    {% for guess_value in guess_list %}
        {{ guess_value }}{% if not forloop.last %},{% endif %}
    {% endfor %}
</p>
{% empty %}
<p>Nothing to show.</p>
{% endfor %}
{答案中的猜测列表%}

{guess_列表%中的guess_值为%0}
{{guess_value}{%if非forloop.last%},{%endif%}
{%endfor%}

{%empty%} 没什么可展示的

{%endfor%}

如果for循环是最后一个,则后面的逗号将不会呈现。

是的,谢谢。似乎模板标签/过滤器可以帮助我做到这一点。但是,你不是还在这里的末尾使用逗号吗
{{guess\u value{124; my\u filter}},
?我不知道你为什么要把它放在你原来的模板中,所以我没有对它发脾气,我的重点只是过滤器。好的。我理解。我的目标是显示用户对特定问题的“猜测”。每个列表项(一个元组)都是一个猜测。在给定的示例中,A是第一个猜测,然后是B和C作为第二个猜测,依此类推。每个猜测应显示在单独的行中。每一行都应该包含用户的猜测;它仍然会显示你不想要的逗号;如果您只是从那里删除它,您甚至可能不需要使用过滤器。但是,如果您在从模板中删除逗号后仍看到它;过滤器肯定会解决这个问题。它不应该像
{guess\u list{my\u filter}}
那样,因为函数my\u filter需要一个元组/列表吗?谢谢,这个解决方案起了作用,也让我意识到我应该比平时更经常地阅读django文档。太好了,很高兴它有帮助。Django文档非常棒,所以当遇到障碍时,尝试阅读它是一个非常好的决定。
{% for guess_list in answer_guess_list %}
<p>
    {% for guess_value in guess_list %}
        {{ guess_value }}{% if not forloop.last %},{% endif %}
    {% endfor %}
</p>
{% empty %}
<p>Nothing to show.</p>
{% endfor %}