TurboGears - Phân cấp URL
Đôi khi, một ứng dụng web có thể yêu cầu cấu trúc URL có nhiều hơn một cấp. TurboGears có thể duyệt qua hệ thống phân cấp đối tượng để tìm ra phương pháp thích hợp có thể xử lý yêu cầu của bạn.
Một dự án 'bắt đầu nhanh' với hộp số có lớp BaseController trong thư mục lib của dự án. Nó có sẵn dưới dạng 'Hello / hello / lib / base.py'. Nó đóng vai trò là lớp cơ sở cho tất cả các bộ điều khiển phụ. Để thêm cấp độ phụ của URL trong ứng dụng, hãy thiết kế một lớp phụ có tên là BlogController bắt nguồn từ BaseController.
BlogController này có hai hàm điều khiển, index () và post (). Cả hai đều được thiết kế để hiển thị mỗi mẫu, blog.html và post.html.
Note - Các mẫu này được đặt bên trong một thư mục con - template / 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}
Bây giờ khai báo một đối tượng của lớp này trong lớp RootController (trong root.py) như sau:
class RootController(BaseController):
blog = BlogController()
Các chức năng điều khiển khác cho URL cấp cao nhất sẽ có trong lớp này như trước đó.
Khi một URL http://localhost:8080/blog/được nhập, nó sẽ được ánh xạ tới hàm điều khiển index () bên trong lớp BlogController. Tương tự,http://localhost:8080/blog/post sẽ gọi hàm post ().
Mã cho blog.html và post.html như sau:
Blog.html
<html>
<body>
<h2>My Blog</h2>
</body>
</html>
post.html
<html>
<body>
<h2>My new post dated $date</h2>
</body>
</html>
Khi một URL http://localhost:8080/blog/ được nhập, nó sẽ tạo ra kết quả sau:
Khi một URL http://localhost:8080/blog/post được nhập, nó sẽ tạo ra kết quả sau: