- TurboGears 教程
- TurboGears - 首页
- TurboGears - 概览
- TurboGears - 环境
- TurboGears - 第一个程序
- TurboGears - 依赖项
- TurboGears - 服务模板
- TurboGears - HTTP 方法
- Genshi 模板语言
- TurboGears - 包含
- TurboGears - JSON 渲染
- TurboGears - URL 层次结构
- TurboGears - Toscawidgets 表单
- TurboGears - 验证
- TurboGears - 闪存消息
- TurboGears - Cookie 和会话
- TurboGears - 缓存
- TurboGears - Sqlalchemy
- TurboGears - 创建模型
- TurboGears - CRUD 操作
- TurboGears - 数据网格
- TurboGears - 分页
- TurboGears - 管理员访问
- 授权与认证
- TurboGears - 使用 MongoDB
- TurboGears - 脚手架
- TurboGears - 钩子
- TurboGears - 编写扩展
- TurboGears - 可插拔应用程序
- TurboGears - RESTful 应用程序
- TurboGears - 部署
- TurboGears 有用资源
- TurboGears - 快速指南
- TurboGears - 有用资源
- TurboGears - 讨论
TurboGears - URL 层次结构
有时,Web 应用程序可能需要具有多级 URL 结构。TurboGears 可以遍历对象层次结构以查找可以处理请求的适当方法。
使用 gearbox “快速启动” 的项目在项目的 lib 文件夹中有一个 BaseController 类。它可用作“Hello/hello/lib/base.py”。它充当所有子控制器的基类。为了在应用程序中添加 URL 的子级,请设计一个名为 BlogController 的子类,该子类派生自 BaseController。
此 BlogController 具有两个控制器函数,index() 和 post()。两者都旨在分别公开一个模板,blog.html 和 post.html。
注意 - 这些模板放在一个子文件夹中 - 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 https://127.0.0.1:8080/blog/ 时,它将映射到 BlogController 类中的 index() 控制器函数。类似地,https://127.0.0.1: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 https://127.0.0.1:8080/blog/ 时,它将产生以下输出:
当输入 URL https://127.0.0.1:8080/blog/post 时,它将产生以下输出:
广告