Python3 + FlaskでテンプレートエンジンJinja2を利用する

前回はPython3とFlaskを利用して、サーバーを立ち上げました。

kenteiblog.hatenablog.com

 

 

今回はhtmlで画面に表示するテンプレートを作成し、ルートURLに接続したらhtmlが表示されるようにしてみます。

 

FlaskにはJinja2というテンプレートエンジンがあるのでそちらを利用します。

 

Hello World API Python(render template)

 

前回記事から変更されている箇所は、以下の2箇所です。

・hello.pyの1行目…importに「render_template」を追加。

・hello.pyの6行目…ルートURLにアクセスするとindex.htmlが描画する処理を追加。

 

さらにindex.htmlが追加されています。(かなりの手抜きですが。。)

 

上記を動かせば、以下のように動作します。

 

  • ルートURLにアクセスするとindex.htmlの内容が表示されます。その際、置き換え文字になった{{title}}や{{userName}}については、render_templateをreturnする際に指定した「test」,「kentei」に置き換えられます。
  • /helloに接続したときの動作は前回と変わらず、Hello worldが表示されます。 

 

ここで少しトラブったのは、index.htmlの置き場所です。hello.pyと同階層においても動かず、接続しようとすると、以下のエラーが表示されます。

jinja2.exceptions.TemplateNotFound: index.html

 

理由は置き場所が決まっているからです。「templates」フォルダを作成し、その下にindex.htmlを置かなければなりません。

フレームワークのルールなので合わせましょう。

 

templateではなく、templatesなので注意です(複数形です)。私はここを間違っていて一人唸っていました。。

 

以上です。

 

2017/11/19 賢帝俊来