※2016年6月19日に書いたブログ記事からの転記です。
どうも。
Google App Engine+webapp2のアプリケーションでJinja2を使っており、Markdown記法をHTMLに変換するカスタムフィルターが必要になって書いたのでメモしておきます。
といってもpypiでMarkdownというパッケージをダウンロードして、それを使っているだけです。
Markdown : Python Package Index
ダウンロード&解凍すると出てくるmarkdownというフォルダを、app_id/lib/markdown
として保存。
自分はJinja2カスタムフィルターを app_id/lib/jinja2_filter.py
というファイルに記述しているので、そこに以下のコードを追加。
import markdown
def markdown2html(value):
return markdown.Markdown().convert(value)
あとは main.py
の app
に以下のように書いて追加した markdown2html
をカスタムフィルターとして登録。
app = webapp2.WSGIApplication(
route=...,
config={
'webapp2_extras.jinja2': {
'filters': {
'markdown2html': jinja2_filters.markdown2html,
}
}
},
)
それでJinja2のテンプレートで次のようにするとMarkdown記法がHTMLに変換されます。
{{ var_markdown | markdown2html | safe }}
なお、safe
を付けないと、HTMLがエスケープされてしまいます。
以上です。