- 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 - 依赖项
一个 TurboGears 项目包含以下目录:
Config - 项目设置和配置依赖于此目录
Controllers - 所有项目控制器,即 Web 应用程序的逻辑
i18n - 支持语言的翻译文件
Lib - 实用程序 Python 函数和类
Model - 数据库模型
Public Static Files - CSS、JavaScript 和图像
Templates - 控制器公开的模板。
Tests - 执行的测试集。
Websetup - 在应用程序设置时执行的函数。
如何安装项目
现在需要安装此项目。项目的基本目录中已提供了一个setup.py文件。执行此脚本时,将安装项目依赖项。
Python setup.py develop
默认情况下,在项目设置时会安装以下依赖项:
- Beaker
- Genshi
- zope.sqlalchemy
- sqlalchemy
- alembic
- repoze.who
- tw2.forms
- tgext.admin ≥ 0.6.1
- WebHelpers2
- babel
安装完成后,通过在 shell 中发出以下命令来启动开发服务器上的项目服务:
Gearbox serve –reload –debug
按照上述命令为预构建的示例项目提供服务。在浏览器中打开https://127.0.0.1:8080。此现成的示例应用程序简要介绍了 TurboGears 框架本身。
在此 Hello 项目中,默认控制器在 controllers 目录中创建为Hello/hello/controllers.root.py。让我们用以下代码修改 root.py:
from hello.lib.base import BaseController from tg import expose, flash class RootController(BaseController): movie = MovieController() @expose() def index(self): return "<h1>Hello World</h1>" @expose() def _default(self, *args, **kw): return "This page is not ready"
准备好一个基本的可运行应用程序后,可以在控制器类中添加更多视图。在上面的Mycontroller类中,添加了一个新方法sayHello()。@expose()装饰器将/sayHello URL 附加到它。此函数旨在从 URL 中接受名称作为参数。
通过“gearbox serve”命令启动服务器后,https://127.0.0.1:8080。即使输入以下 URL,也会在浏览器中显示 Hello World 消息:
https://127.0.0.1:8080/
https://127.0.0.1:8080/index
所有这些 URL 都映射到RootController.index()方法。此类还具有_default()方法,当 URL 未映射到任何特定函数时,将调用此方法。对 URL 的响应通过 @expose() 装饰器映射到函数。
可以从 URL 向公开的函数发送参数。以下函数从 URL 读取名称参数。
@expose() def sayHello(self, name): return '<h3>Hello %s</h3>' %name
在浏览器中,作为对 URL 的响应,将看到以下输出:https://127.0.0.1:8080/?name=MVL
Hello MVL
TurboGears 自动将 URL 参数映射到函数参数。我们的 RootController 类继承自 BaseController。这在应用程序的lib 文件夹中的base.py中定义。
其代码如下:
from tg import TGController, tmpl_context from tg import request __all__ = ['BaseController'] def __call__(self, environ, context): tmpl_context.identity = request.identity return TGController.__call__(self, environ, context)
TGController.__call__ 将请求路由到的控制器方法分派出去。