2017-09-06 14 views
0

私はJinjaのドキュメントを読んで、truncateフィルタを使用しています。私はドキュメントに定義されているとおりに正確に使用しました。ドキュメントからJinja無効なフィルタ、フィルタが組み込まれています

TRUNCATE(S、長さ= 255、killwords = Falseを、エンド=」...」、余裕=なし)は、文字列の切り捨てコピーを返します 。長さは最初の パラメータで指定され、デフォルトは255になります.2番目のパラメータがtrueの場合、 フィルタはテキストを長さに沿ってカットします。それ以外の場合は、最後の 語を破棄します。テキストが実際に切り捨てられた場合は、省略記号 記号( "...")が付加されます。 「...」以外の省略符号を使用する場合は、 の3番目のパラメータを使用して指定します。 4番目のパラメーターで指定された許容差を超えて の長さを超えるストリングは、 が切り捨てられません。ここで

私のコードです:

{% if post.replies.all %} 
<ul class="accordion" data-accordion data-multi-Expand="true" data-allow-all-closed="true"> 
{% for reply in post.replies.all %} 
     <li class="accordion-item" data-accordion> 
      <a href="#" class="accordion-title">{{reply.by}}: {{reply.content|truncate(14)}}</a> 
      <div class="accordion-content" data-tab-content> 
       <img src="{{ reply.by.profile.img_url }}" class="thumbnail" width="50" height="50"> 
       <p>{{ reply.content }}</p> 
      </div> 
     </li> 
{% endfor %} 
</ul> 
{% endif %} 

私がテストした後、次のトレースバックを得る:

enter image description here

私が間違って何をしているのですか?

+2

DjangoはテンプレートをJinjaとして扱いますか? Djangoテンプレート言語として扱われた場合、そのエラーが発生する可能性があります。 Jinjaでは、 'post.replies.all()'を呼び出すことを期待しています。 – Alasdair

+0

私は確信していません。私はJinja2を持っていることを確認するために私のバージョンをチェックし、実際には1.2しか持っていなかった。私はJinja2にアップグレードして無駄にしました。 –

答えて

2

あなたはかなり簡単ですJinjaを使用していません。あなたはDjangoテンプレート言語を使用しています。

Djangoに組み込まれているフィルタは、hereと記載されています。文字列を切り捨てるフィルタはtruncatecharsと呼ばれます。また、パラメータをフィルタに渡すには、Django構文を使用する必要があります。

{{reply.content|truncatechars:14}} 
+0

あなたの答えをありがとう!代わりにjinjaを切り替えて使用できますか?私は 'settings.py'の' INSTALLED_APPS'に 'jinja2 'をリストアップしていますが、それは単に動作していないと思います。 –

+2

テンプレートのバックエンドを変更する必要があります。[the docs](https://docs.djangoproject.com/ja/1.11/topics/templates/#support-for-template-engines)を参照してください。あなたが非常に良い理由がなければ、このことをしないことを本当に勧めます。 Alasdairが指摘したように、テンプレートの他の部分はすでにJinjaではなくDjangoの構文に基づいています。 –

+0

簡潔な回答ありがとうございます。私は1つの質問がある、なぜ私は私が 'INSTALLED_APPS'設定でジンジャをリストアップしている場合、ジンジャを使用していますか? –

関連する問題