- 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 - 原油操作
- TurboGears - 数据网格
- TurboGears - 分页
- TurboGears - 管理员访问
- 授权与认证
- TurboGears - 使用 MongoDB
- TurboGears - 脚手架
- TurboGears - 挂钩
- TurboGears - 编写扩展
- TurboGears - 可插拔应用
- TurboGears - 安静的应用程序
- TurboGears - 部署
- TurboGears 有用资源
- TurboGears - 快速指南
- TurboGears - 有用的资源
- TurboGears - 讨论
TurboGears – 脚手架
Gearbox工具包包含scaffold命令,这对于快速创建TurboGears应用程序的新组件非常有用。通过变速箱的快速启动命令生成的应用程序在模型文件夹(model.py.template)中具有骨架模板,模板文件夹(template.html.template)和控制器文件夹(controller.py.template)。这些“.template”文件用作为应用程序创建新支架的基础
例如,为了创建一个名为 mymodel 的新模型,只需运行以下命令 -
gearbox scaffold model mymodel
此命令将生成 model/mymodel.py 并在其中定义 newmodel 类。
# -*- coding: utf-8 -*- """Mymodel model module.""" from sqlalchemy import * from sqlalchemy import Table, ForeignKey, Column from sqlalchemy.types import Integer, Unicode, DateTime, LargeBinary from sqlalchemy.orm import relationship, backref from hello.model import DeclarativeBase, metadata, DBSession class Mymodel(DeclarativeBase): __tablename__ = 'mymodels' uid = Column(Integer, primary_key = True) data = Column(Unicode(255), nullable = False) user_id = Column(Integer, ForeignKey('tg_user.user_id'), index = True) user = relationship('User', uselist = False, backref = backref('mymodels',cascade = 'all, delete-orphan')) __all__ = ['Mymodel']
用户现在可以根据自己的要求对表结构进行修改,然后将其导入到model/__init__.py中,以使模型在应用程序中可用。
为了创建模型,可以通过以下命令同时创建一个处理模型的控制器类和一个索引页,所有这三个组件都可以创建。
gearbox scaffold model controller template mymodel
该命令将生成controllers\mymodel.py,其中正式定义了MymodelController 类。
# -*- coding: utf-8 -*- """Mymodel controller module""" from tg import expose, redirect, validate, flash, url # from tg.i18n import ugettext as _ # from tg import predicates from hello.lib.base import BaseController # from hello.model import DBSession class MymodelController(BaseController): # Uncomment this line if your controller requires an authenticated user # allow_only = predicates.not_anonymous() @expose('hello.templates.mymodel') def index(self, **kw): return dict(page = 'mymodel-index')
要开始使用此控制器,请将其安装到应用程序 RootController 中以定义 MymodelController 的实例。在controllers\root.py 中添加这些行 -
From hello.controller.mymodel import MymodelController class RootController(BaseController): mymodel = MymodelController()
还将在 templates 文件夹中创建模板脚手架 templates\mymodel.html。它将充当“/mymodel”URL 的索引页面。
模板文件夹中生成的mymodel.html 文件如下 -
<html xmlns = "http://www.w3.org/1999/xhtml" xmlns:py = "http://genshi.edgewall.org/" xmlns:xi = "http://www.w3.org/2001/XInclude"> <xi:include href = "master.html" /> <head> <title>Mymodel</title> </head> <body> <div class = "row"> <div class = "col-md-12"> <h2>Mymodel</h2> <p>Template page for Mymodel</p> </div> </div> </body> </html>