2016-05-26 4 views
0

Jinja2に変数名を作成して呼び出す方法はありますか?私は、出力は次のようなものであることを期待するJinja2テンプレートで構築された変数名を呼び出しますか?

{% for type in ('Students', 'Faculty', 'Groups') %} 
    {% set import_name = 'latest_' + type|lower + '_import' %} 
    {{ type }}: {{ import_name.created_at }} 
{% endfor %} 

:私はこのような何かをしたい

Students: 5/26/2016 
Faculty: 5/25/2016 
Groups: 5/25/2016 

私は、latest_faculty_import、latest_students_import変数を持っている、とテンプレートスコープに設定latest_groups_importとforループで大きな条件付きを避けたいタイプに基づいてimport_nameを設定し、import_nameを "呼び出す"ようにします。 {{call(import_name)}}のようなものが欲しいです。これが可能か、これについて別の方法がありますか?

この場合、3つのテンプレート変数名を逆順に繰り返して、短縮名を大文字にして「印刷」することができますが、この方法で行うことをお勧めします。

+1

なぜあなたの変数が含まれているサーバー側にdictかリストをまとめてみませんか?そのオブジェクトをテンプレート変数としてjinjaに送ります。そう簡単です。 import_nameをstringと同じに設定するだけです。これはcreated_at属性を持たないことになります。 – wgwz

+0

右クリックし、作成したdictをループします。それはうまくいく。ありがとう! – Dan

+0

問題ありません。私は実際にあなたの問題を解決する場合、これを答えに移します。 – wgwz

答えて

1

1つの可能性は、変数を含むサーバー側にdictまたはlistを作成することです。そのオブジェクトをJinjaにテンプレート変数として送信することができます。それは文字列に等しいimport_nameを設定しているだけで、.created_at属性を持たないことになります。

関連する問題