TurboGears-サービングテンプレート

イベントHTMLコンテンツはブラウザに返すことができますが、より高度な出力を行うには、テンプレートエンジンの使用が常に推奨されます。ギアボックスによって「クイックスタート」されたフルスタックプロジェクトでは、Genshiがデフォルトのテンプレートレンダラーとして有効になっています。ただし、最小限のアプリケーションでは、Genshi(またはjinjaなどの他のテンプレートエンジン)をインストールして有効にする必要があります。Genshiテンプレートエンジンは、純粋なxhtmlでテンプレートを記述し、それらを検証してコンパイル時に問題を検出し、壊れたページを提供しないようにします。

テンプレートは、ドット付き表記を使用して参照されます。Helloプロジェクトでは、テンプレートWebページを保存するためのテンプレートディレクトリが提供されています。したがって、sample.html と呼ばれます hello.templates.sample(拡張については言及されていません)。TurboGearsは、エクスポーズデコレータを介してこのテンプレートをレンダリングし、コントローラメソッドをそれにリンクします。tg.render_template() 関数。

公開されたコントローラー関数は、Python辞書オブジェクトを返します。このディクショナリオブジェクトは、リンクされたテンプレートに渡されます。テンプレートのプレースホルダーはディクショナリ値で埋められます。

まず、プレーンなhtmlスクリプトを使用してWebページを表示しましょう。公開されたコントローラーはnull dictionary object HTMLスクリプト内で解析されるデータを送信するつもりはないためです。

サンプルHTMLを作成する方法

私たちの sample.html以下に示します。プロジェクトのテンプレートディレクトリに保存されていることを確認してください。

<html>
   <head>
      <title>TurboGears Templating Example</title>
   </head>
	
   <body>
      <h2>Hello, Welcome to TurboGears!.</h2>
   </body>
</html>

追加 sample() で機能する root.py そしてそれを通してsample.htmlを公開します。

@expose("hello.templates.sample")
   def sample(self):
      return {}

URLを表示すると、ブラウザに次の結果が表示されます。 http://localhost:8080/sample Webサーバーの起動後に入力されます。

前述のように、辞書オブジェクトはパラメーターのコレクションとしてGenshiテンプレートに送信されます。このテンプレートには、コントローラーから受け取ったパラメーターが動的に入力される「プレースホルダー」が含まれています。

変更しましょう sample() 辞書オブジェクトをサンプルテンプレートに送信する関数。

@expose("hello.templates.sample")
   def sample(self,name):
      mydata = {'person':name}
      return mydata

作成する sample.html テンプレートフォルダ内(templates\sample.html

<html>
   <head>
      <title>TurboGears Templating Example</title>
   </head>
	
   <body>
      <h2>Hello, my name is ${person}!.</h2>
   </body>
</html>

上記のHTMLコードでは、 ${person}はプレースホルダーです。入るhttp://localhost:8080/sample?name=MVLブラウザのURLとして。このURLはにマップされていますsample()ルートコントローラーのメソッド。辞書オブジェクトを返します。これは、テンプレートディレクトリ内のリンクされたテンプレートページsample.htmlによって選択されます。$ {person}は、WebページでMVLに置き換えられます。

コントローラ関数でHTMLフォームデータにアクセスすることも可能です。HTMLフォームは、フォームデータの送信に使用します。