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 입력하면 다음과 같은 출력이 생성됩니다.