改行をに変換するJinja2のカスタムフィルター
Google App Engine for PythonでテンプレートエンジンをDjangoからJinja2に変更したのですが、Djangoで使っていたlinebreaksbrフィルターが使えなくなり困ってしまいました。
そこでlinebreaksbrという同じフィルター名でJinja2のカスタムフィルターを作ってみました。
まず、jinja2_custom_filters.pyというファイルを作成して以下を記述します(ファイル名は適当につけました)。
def linebreaksbr(arg): return arg.replace("\n", "<br />\n")
このlinebreaksbrという関数を、Jinja2にカスタムフィルターとして登録します。
下のコードがスタートガイド(英語)で示されているJinja2を使うときの記述です。
import jinja2
jinja_environment = jinja2.Environment(
loader=jinja2.FileSystemLoader(os.path.dirname(__file__)),
)
カスタムフィルターを登録するには、これ↑をこう↓します(下3行を追加)。
jinja_environment = jinja2.Environment(
loader=jinja2.FileSystemLoader(os.path.dirname(__file__)),
)
jinja_environment.filters.update({
"linebreaksbr": jinja2_custom_filters.linebreaksbr,
})
これで、テンプレートファイルで {{ variable|linebreaksbr }}とすると、改行が<br>に変換されるようになりました。
以下を参考にさせていただきました。