我用for循环吐出一些值,并希望确保它只显示X个字符。我对Django来说比较新。
例如:
<div class="bookauthor">
by
{% for author in book.volumeInfo.authors %}
{% if not forloop.first %}&{% endif %}
{{author}}
{% endfor %}
</div>
会产生图书作者列表,例如:
Lennart Berggren&amp; Jonathan M. Borwein&amp; Peter B. Borwein
我只喜欢30个字符,因为有时作者列表可能很长。
我知道我可以使用truncatechars(new in Django 1.4)对像{{author|truncatechars:9}}
这样的单个值执行此操作,但我想知道是否有一种优雅的方式应用于for循环,或者来自for循环的结果文本。如果不清楚,请告诉我。
修改
在{%filter%}中使用时,truncatechars似乎无法正常工作。它产生的只是“......”。我会测试一些,可能是一个bug。 truncatewords效果很好,无论如何我可能更适合这种情况。
<div class="bookauthor">
by
{% filter truncatechars:30 %}
{% for author in book.volumeInfo.authors %}
{% if not forloop.first %}&{% endif %}
{{author}}
{% endfor %}
{% endfilter %}
</div>