テンプレートからの動的コンテンツの生成
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
Python Guestbook コード ウォークスルーのこのパートでは、動的なウェブ コンテンツを生成するための Jinja テンプレートの使用方法について説明します。
このページは複数ページからなるチュートリアルの一部です。設定などの手順を最初から見るには、ゲストブックの作成に移動してください。
コードに HTML が埋め込んであると、コードを追いにくくなり保守が困難です。このような場合はテンプレート システムを使用すると便利です。テンプレート システムは、アプリケーションのデータが出現する場所を示す特殊な構文を使って、HTML を別ファイルとして維持します。Python 用のテンプレート システムには、EZT、Cheetah、ClearSilver、Quixote、Django、Jinja2 など、数多くのものがあります。好みのテンプレート エンジンをアプリケーション コードにバンドルして使用できます。
手軽な方法としては、App Engine に Django と Jinja2 のテンプレート エンジンが搭載されています。
Jinja2 テンプレートの使用
app.yaml
ファイルには、必須ライブラリとしての最新バージョンの jinja2
がリストされています。本番環境のアプリケーションでは、version: latest
ではなく実際のバージョン番号を使用してください。
アプリによって jinja2
がインポートされ、jinja2.Environment
オブジェクトが作成されます。
MainPage
リクエスト ハンドラの get
メソッドは Key-Value ペアのディクショナリを形成し、これを template.render
に渡します。
このディクショナリを入力データとして受信する index.html
テンプレートに従って、ページがレンダリングされます。
JINJA_ENVIRONMENT.get_template(name)
メソッドは、テンプレート ファイルの名前を受け取り、テンプレート オブジェクトを返します。template.render(template_values)
呼び出しは、値のディクショナリを受け取り、レンダリングしたテキストを返します。このテンプレートは Jinja2 テンプレート構文を使用して値にアクセスして反復処理し、各値のプロパティを参照できます。
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2023-11-28 UTC。
[{
"type": "thumb-down",
"id": "hardToUnderstand",
"label":"Hard to understand"
},{
"type": "thumb-down",
"id": "incorrectInformationOrSampleCode",
"label":"Incorrect information or sample code"
},{
"type": "thumb-down",
"id": "missingTheInformationSamplesINeed",
"label":"Missing the information/samples I need"
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"翻訳に関する問題"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"その他"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"わかりやすい"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"問題の解決に役立った"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"その他"
}]
{"lastModified": "\u6700\u7d42\u66f4\u65b0\u65e5 2023-11-28 UTC\u3002"}
[[["わかりやすい","easyToUnderstand","thumb-up"],["問題の解決に役立った","solvedMyProblem","thumb-up"],["その他","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["翻訳に関する問題","translationIssue","thumb-down"],["その他","otherDown","thumb-down"]],["最終更新日 2023-11-28 UTC。"]]