TurboGears-URL 계층

때로는 웹 응용 프로그램에 둘 이상의 수준이있는 URL 구조가 필요할 수 있습니다. TurboGears는 객체 계층 구조를 탐색하여 요청을 처리 할 수있는 적절한 방법을 찾을 수 있습니다.

기어 박스가있는 '빠른 시작'프로젝트는 프로젝트의 lib 폴더에 BaseController 클래스가 있습니다. 'Hello / hello / lib / base.py'로 제공됩니다. 모든 하위 컨트롤러의 기본 클래스 역할을합니다. 애플리케이션에 하위 수준의 URL을 추가하려면 BaseController에서 파생 된 BlogController라는 하위 클래스를 디자인합니다.

이 BlogController에는 index ()와 post ()의 두 가지 컨트롤러 함수가 있습니다. 둘 다 각각 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 입력하면 다음과 같은 출력이 생성됩니다.