繁体   English   中英

在 Django 模板中显示列表

[英]display list in django template

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

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

我不知道如何实现。 你能帮忙吗?

这将是一种方法:

{% 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 %}

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

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

for templatetag 中有一个内置选项,称为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 %}

如果 for 循环在最后,尾随逗号将不会呈现。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM