Flask及びjinja2において, html上で{{ }}が入れ子になってしまうとき.

今 names は list 型のデータであるとして,

python3

names = ['suzuki', 'tamura', 'imagawa']

のように様々な名前が入っているとします. このとき html 上で

index.html

{% for name in names %} <a href="{{ 'url_for('form', chosen='{{ name }}' }}">Click here. </a> {% endfor %}

と書いて, 最終的には名前の数だけ "Click here. " を作り, それぞれが /form?chosen=...という http にアクセスできるようにしたいのです.
しかしこのままでは {{ }} が入れ子になっているため(?), 正常に動きません.
テストケースとして chosen='abc' を代入した下記のもの

index.html

{% for name in names %} <a href="{{ 'url_for('form', chosen='abc' }}">Click here. </a> {% endfor %}

は正常に /form?chosen=abc にアクセスできました.
また jinja2 の記法では python の format 関数のようなことができると聞いたので

index.html

{% for name in names %} <a href="{{ 'url_for('form', chosen='{}'!'.format(name) }}">Click here. </a> {% endfor %}

と書き換えてみましたが失敗しました.

目標を達成するためにはどのように書けばよいのでしょうか.
Flask を始めたばかりのため, 初歩的な質問かもしれませんが, 何卒宜しくお願い致します.

コメントを投稿

0 コメント