如何截断Django模板循环中的文本

时间:2012-04-24 01:13:57

标签: django django-templates

我用for循环吐出一些值,并希望确保它只显示X个字符。我对Django来说比较新。

例如:

  <div class="bookauthor">
    by 
    {% for author in book.volumeInfo.authors %}
      {% if not forloop.first %}&amp;{% 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 %}&amp;{% endif %}
            {{author}}
          {% endfor %}  
        {% endfilter %}  
     </div>

1 个答案:

答案 0 :(得分:1)