2012-04-24 9 views
0

forループを使っていくつかの値を吐き出していて、X文字しか表示しないようにしたいのですが。私は比較的新しいDjangoです。例えばDjangoテンプレートループのテキストを切り詰めるには

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

は、本の著者、例えばのリストを生成します:レナートBerggrenによって

&ジョナサン・M. Borwein &ピーターB. Borwein

と私は30文字しか好きではないかもしれません。なぜなら、時には著者のリストが長くなることがあるからです。 のような単一の値に対してこれを行うにはtruncatechars(new in Django 1.4)を使うことができると私は理解していますが、forループまたはそのforループの結果のテキストに適用するエレガントな方法があるのでしょうか? 。これがはっきりしない場合はお知らせください。

EDIT

truncatecharsは{%フィルター%}で使用される場合、適切に動作するようには思えません。それが作り出すものはすべて「...」です。私はもう少しテストします、バグかもしれません。 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

優れた、ありがとうございました。 Djangoは私の心を吹き飛ばすことは決してありません。 – Banjer

関連する問題