dogrunjp
10/10/2015 - 8:58 AM

Pythonのテンプレートエンジン"jinja2"のカスタムフィルターで、リストのデータをパラメータに変換しリンクとして表示する方法。

Pythonのテンプレートエンジン"jinja2"のカスタムフィルターで、リストのデータをパラメータに変換しリンクとして表示する方法。

Pythonのテンプレートエンジン"jinja2"のカスタムフィルターで、リストのデータをパラメータにしたリンクに変換して表示する方法。

リストに収まったそれぞれのデータをあるURLのパラメータにして、リンクに変換して表示するという操作で、jinja2のカスタムフィルターとリスト内包表記を使うと割とシンプルに書けるというサンプルです。

テンプレート側ではリスト形式のデータをパイプでカスタムフィルターに渡すだけ。

{{ item['hogelist'] | list2link }}

アプリケーションのカスタムフィルターは、リストのそれぞれの値をパラメータとしたリンクに変換し文字列にjoinして返します。

def list2link(list):
    str = ','.join(["<a href='search?q=" + x + "'>" + x + "</a>" for x in list])
    return str

あとはHTMLリンダリングの際にフィルターを呼び出せるように登録するだけ

env = Environment(loader=FileSystemLoader("./template", encoding='utf8'))
env.filters['list2link'] = list2link
template = "hoge.html"
tmpl = env.get_template(template)
htmlstring = tmpl.render(item=some_list)

簡単。