2017-07-04 3 views
0
{% set title_org = nav_item.title.split(" ") %} 
{% set title_mod = "" %} 
{% for i in title_org %} 
    {% if loop.index > 3 %} 
    {% set title_mod = title_mod + ' ' + i %} 
    {% endif %} 
{% endfor %} 
<a href="{{ nav_item.url }}" id="{{ id }}">{{ title_mod }}</a> 

{{ title_mod }}はループ内で連結されていても空の文字列です。 forループの外側で更新された{{ title_mod }}を取得するにはどうすればよいですか?ループ内で変更された変数がループ外に残らない

答えて

0

あなたは

<p style="display:none;"> 
{% set title_data = {'org': nav_item.title.split(" "), 'mod' : ""} %} 
{% for i in title_data.org %} 
    {% if loop.index > 3 %} 
    {{ title_data.update({'mod' : title_data.mod + ' ' + i}) }} 
    {% endif %} 
{% endfor %} 
</p> 
<a href="{{ nav_item.url }}" id="{{ id }}">{{ title_data.mod }}</a> 

のような配列/辞書が、私はこのようなニーズが最初の場所で辞書内であることが、なぜわからないdupe

+0

ように見えます使用する必要があります。それにもかかわらず、あなたの最初の行で '' mod '= 'を' 'mod':' 'に変更しました。次に、このエラーを返します。 'jinja2.exceptions.TemplateSyntaxError:期待されたトークン '文ブロックの終わり'、 '。'があります。 – notalentgeek

+0

'{%set title_data.update({'mod':title_data.mod + '' + i})%}'にあるエラーです。 – notalentgeek

+0

@なぜこれが辞書の中にある必要があるのか​​分かりません_ これは、Jinjaがグローバル/ローカルコンテキスト変数を処理する方法です。これは、どのようなものでも、私はupdate()のドキュメントを見つけることができません。 'set'を必要としなかったので、今すぐ試してみてください – vqw

関連する問題