TurboGears-URL階層

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

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

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

Note −これらのテンプレートはサブフォルダ内に配置されます−テンプレート/ブログ

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()関数を呼び出します。

blog.htmlとpost.htmlのコードは以下の通りです-

Blog.html

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

post.html

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

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

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