[英]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.