PythonモジュールFlaskのテンプレートエンジンで変数展開する方法についてまとめました。
テンプレートエンジンとは
本ページの内容は以下動画で解説しています。
Pythonモジュール「Flask」には「Jinja2」というテンプレートエンジンが標準搭載されています。
テンプレートエンジンとは、Webページ(html)を動的に作成できる機能です。テンプレートエンジンは、あらかじめ用意したテンプレート(HTMLのひな形)を加工して出力します。
実際のコードを見たほうが理解しやすいと思うので、テンプレートエンジン有りとなしのコードの違いをみていきます。
【例1】テンプレートエンジン無しの場合
まずは、テンプレートエンジンなしの最低限の機能だけで文字列(HTML)を返すだけのWebアプリを作ってみます。
■server.py
上記のプログラムを実行し、ブラウザで「http://127.0.0.1:8000」にアクセスすると、「トップページです」表示されます。
ただし、このやり方だと複雑なページになるほど、HTMLのコード管理が面倒になります。
【例2】テンプレートエンジンありの場合
テンプレートエンジンを用いる場合、returnで「render_template」メソッドを返します。
書式
render_template(テンプレートファイルのパス, 変数名1=値1, 変数名2=値2, ...)
第一引数には、テンプレートファイル(HTMLの雛形)のパスを指定します。
第2引数以降で、テンプレート(HTMLの雛形)内で使う変数をキーワード引数(変数名 = 値)で指定します(カンマ区切りで複数指定可能)。
テンプレートファイル内では{{変数名}}を入れることで、render_template関数の引数に指定した変数を展開できます。
テンプレートファイルは、pythonファイル(app.runするもの)と同じ階層にtemplatesフォルダを作成し、その中に配置します。
■ディレクトリ構成
root/ |__server.py |__templates/ |__index.html
■server.py
→pythonファイル(app.runするもの)
■templates/index.html
→テンプレートファイル(トップページ用)です
上記のプログラムを実行し、ブラウザで「http://127.0.0.1:8000」にアクセスすると、「トップページです」表示されます。
コメント