TurboGears - 依赖项
TurboGears 项目包含以下目录 −
Config − 项目设置和配置所依赖的位置
Controllers − 所有项目控制器,Web 应用程序的逻辑
i018n − 所支持语言的翻译文件
Lib − 实用程序 Python 函数和类
Model − 数据库模型
公共静态文件 − CSS、JavaScript 和图像
模板 −我们的控制器公开的模板。
测试 − 已完成的测试集。
Websetup − 在应用程序设置时执行的函数。
如何安装项目
现在需要安装此项目。项目的基本目录中已提供 setup.py。执行此脚本时,将安装项目依赖项。
Python setup.py evolve
默认情况下,在设置项目时会安装以下依赖项 −
- Beaker
- Genshi
- zope.sqlalchemy
- sqlalchemy
- alembic
- repoze.who
- tw2.forms
- tgext.admin ≥ 0.6.1
- WebHelpers2
- babel
安装后,通过在 shell − 中发出以下命令开始在开发服务器上为项目提供服务
Gearbox serve –reload –debug
按照上述命令为预构建的示例项目提供服务。在浏览器中打开 http://localhost:8080。这个现成的示例应用程序简要介绍了 TurboGears 框架本身。
![Project Window](/turbogears/images/project_window.jpg)
在此 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"命令启动服务器后,http://localhost:8080。即使输入以下 URL −,浏览器中也会显示 Hello World 消息
http://localhost:8080/
http://localhost:8080/index
所有这些 URL 都映射到 RootController.index() 方法。此类还具有 _default() 方法,当 URL 未映射到任何特定函数时,该方法将被调用。对 URL 的响应由 @expose() 装饰器映射到函数。
可以从 URL 向公开函数发送参数。以下函数从 URL 读取名称参数。
@expose() def sayHello(self, name): return '<h3>Hello %s</h3>' %name
浏览器中将显示以下输出作为对 URL 的响应 − http://localhost: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__ 将请求分派到路由到的 Controller 方法。