Flask-templates
フラスコ–テンプレート
特定のURLにバインドされた関数の出力をHTML形式で返すことができます。 たとえば、次のスクリプトでは、* hello()関数は *'hello World' に <h1> タグを付加してレンダリングします。
ただし、PythonコードからHTMLコンテンツを生成することは、特に変数データや条件やループなどのPython言語要素を配置する必要がある場合は面倒です。 これには、HTMLから頻繁にエスケープする必要があります。
ここで、Flaskのベースとなっている Jinja2 テンプレートエンジンを利用できます。 関数からハードコードHTMLを返す代わりに、* render_template()*関数によってHTMLファイルをレンダリングできます。
Flaskは、このスクリプトが存在するのと同じフォルダー内のテンプレートフォルダーでHTMLファイルを見つけようとします。
- アプリケーションフォルダー
- Hello.py
- テンプレート
- こんにちは
- 「ウェブテンプレートシステム」*という用語は、変数データを動的に挿入できるHTMLスクリプトの設計を指します。 Webテンプレートシステムは、テンプレートエンジン、ある種のデータソース、およびテンプレートプロセッサで構成されます。
Flaskは jinja2 テンプレートエンジンを使用します。 Webテンプレートには、変数と式(これらの場合はPython式)のHTML構文が散在するプレースホルダーが含まれており、テンプレートのレンダリング時に値が置き換えられます。
次のコードは、テンプレートフォルダーに hellol として保存されます。
次に、Pythonシェルから次のスクリプトを実行します。
開発サーバーの実行が開始されたら、ブラウザーを開いてURLを入力します- http://localhost:5000/hello/mvl
URLの*変数*部分は、 \ {\ {name}} プレースホルダーに挿入されます。
- \ {%… ステートメントの%}
- \ {\ {… }}は、テンプレートの出力に出力する式
- \ {#… #}テンプレート出力に含まれないコメントの場合 *#… ##行ステートメント
次の例では、テンプレートでの条件ステートメントの使用を示しています。* hello()関数のURLルールは整数パラメーターを受け入れます。 *hellol テンプレートに渡されます。 その中で、受け取った数値(マーク)の値が比較され(50より大きいか小さい)、それに応じてHTMLが条件付きでレンダリングされます。
Pythonスクリプトは次のとおりです-
条件文 if-else および endif は、区切り文字 \ {%..%} で囲まれていることに注意してください。
Pythonスクリプトを実行し、URL http://localhost/hello/60 にアクセスしてから、 http://localhost/hello/30 にアクセスして、条件に応じて変化するHTMLの出力を確認します。
Pythonループ構造は、テンプレート内でも使用できます。 次のスクリプトでは、* result()関数は、ブラウザーでURL *http://localhost:5000/result が開かれると、テンプレート resultsl に辞書オブジェクトを送信します。
Pythonシェルから次のコードを実行します。
次のHTMLスクリプトを resultl としてテンプレートフォルダーに保存します。
ここでも、 For ループに対応するPythonステートメントは\ {%..%}で囲まれていますが、式 keyおよびvalue は \ {\ {}} 内に配置されています。
開発の実行が開始されたら、ブラウザーで http://localhost:5000/result を開き、次の出力を取得します。