Turbogears-url-hierarchy

提供:Dev Guides
移動先:案内検索

TurboGears-URL階層

Webアプリケーションでは、複数のレベルを持つURL構造が必要になる場合があります。 TurboGearsは、オブジェクト階層をトラバースして、要求を処理できる適切なメソッドを見つけることができます。

ギアボックスを使用した「クイックスタート」プロジェクトには、プロジェクトのlibフォルダーにBaseControllerクラスがあります。 「Hello/hello/lib/base.py」として利用できます。 すべてのサブコントローラーの基本クラスとして機能します。 アプリケーションにサブレベルのURLを追加するには、BaseControllerから派生したBlogControllerというサブクラスを設計します。

このBlogControllerには、index()とpost()の2つのコントローラー関数があります。 どちらもテンプレート、ブログ、投稿を公開するように設計されています。

-これらのテンプレートはサブフォルダ内に配置されます-templates/blog

class BlogController(BaseController):

   @expose('hello.templates.blog.blog')
   def index(self):
      return {}

   @expose('hello.templates.blog.post')
   def post(self):
      from datetime import date
      now = date.today().strftime("%d-%m-%y")
      return {'date':now}

次のようにRootControllerクラス(root.py内)でこのクラスのオブジェクトを宣言します-

class RootController(BaseController):
   blog = BlogController()

トップクラスURLの他のコントローラー関数は、以前と同様にこのクラスにあります。

URL http://localhost:8080/blog/ を入力すると、BlogControllerクラス内のindex()コントローラー関数にマップされます。 同様に、 http://localhost:8080/blog/post はpost()関数を呼び出します。

ブログと投稿のコードは以下の通りです-

Blogl

<html>
   <body>
      <h2>My Blog</h2>
   </body>
</html>

postl

<html>
   <body>
      <h2>My new post dated $date</h2>
   </body>
</html>

URL http://localhost:8080/blog/ を入力すると、次の出力が生成されます-

ブログ

URL http://localhost:8080/blog/post を入力すると、次の出力が生成されます-

ブログ投稿