Turbogears-serving-templates
TurboGears-配信テンプレート
HTMLコンテンツはブラウザに返されますが、より高度な出力を得るには、テンプレートエンジンの使用が常に推奨されます。 ギアボックスによって「クイックスタート」されるフルスタックプロジェクトでは、Genshiがデフォルトのテンプレートレンダラーとして有効になっています。 ただし、最小限のアプリケーションでは、Genshi(またはjinjaなどの他のテンプレートエンジン)をインストールして有効にする必要があります。 Genshiテンプレートエンジンは、純粋なxhtmlでテンプレートを記述し、コンパイル時に問題を検出して破損したページの提供を防ぐためにテンプレートを検証することを許可します。
テンプレートは、ドット表記を使用して参照されます。 Helloプロジェクトでは、テンプレートWebページを保存するためのテンプレートディレクトリが提供されています。 したがって、 samplel は hello.templates.sample (拡張子は言及されていません)として参照されます。 TurboGearsは、* tg.render_template()*関数によってコントローラーメソッドをリンクするための公開デコレーターを介してこのテンプレートをレンダリングします。
公開されたコントローラー関数は、Python辞書オブジェクトを返します。 このディクショナリオブジェクトは、リンクされたテンプレートに順番に渡されます。 テンプレートのプレースホルダーには、辞書の値が入力されます。
まず、プレーンHTMLスクリプトを使用してWebページを表示します。 HTMLスクリプト内で解析するデータを送信するつもりはないため、公開されたコントローラーは* null辞書オブジェクト*を返します。
サンプルHTMLを作成する方法
*samplel* を以下に示します。 プロジェクトのテンプレートディレクトリに保存されていることを確認してください。
<html>
<head>
<title>TurboGears Templating Example</title>
</head>
<body>
<h2>Hello, Welcome to TurboGears!.</h2>
</body>
</html>
*root.py* に* sample()*関数を追加し、それを介してsamplelを公開します。
@expose("hello.templates.sample")
def sample(self):
return {}
Webサーバーの起動後にURL http://localhost:8080/sample を入力すると、次の結果がブラウザーに表示されます。
上記のように、辞書オブジェクトはパラメーターのコレクションとしてGenshiテンプレートに送信されます。 このテンプレートには、コントローラーから受信したパラメーターが動的に入力される「プレースホルダー」が含まれています。
- sample()*関数を変更して、辞書オブジェクトをサンプルテンプレートに送信します。
@expose("hello.templates.sample")
def sample(self,name):
mydata = {'person':name}
return mydata
テンプレートフォルダーに samplel を作成します( templates \ samplel )
<html>
<head>
<title>TurboGears Templating Example</title>
</head>
<body>
<h2>Hello, my name is ${person}!.</h2>
</body>
</html>
上記のHTMLコードでは、 $ \ {person} がプレースホルダーです。 ブラウザでURLとして http://localhost:8080/sample?name = MVL を入力します。 このURLは、ルートコントローラーの* sample()*メソッドにマッピングされます。 辞書オブジェクトを返します。 これは、templatesディレクトリのリンクされたテンプレートページsamplelによって選択されます。 その後、Webページで$ \ {person}がMVLに置き換えられます。
コントローラ関数でHTMLフォームデータにアクセスすることもできます。 HTMLフォームはフォームデータの送信に使用します。