TurboGears - Giàn giáo

Bộ công cụ Hộp số chứa lệnh giàn giáo, rất hữu ích để tạo nhanh các thành phần mới của ứng dụng TurboGears. Một ứng dụng được tạo bởi lệnh khởi động nhanh của hộp số có một mẫu khung trong thư mục mô hình (model.py.template), một thư mục mẫu (template.html.template) và một thư mục bộ điều khiển (controller.py.template). Các tệp '.template' này được sử dụng làm cơ sở để tạo các khung mới cho một ứng dụng

Ví dụ: để tạo một mô hình mới có tên là mymodel, chỉ cần chạy lệnh sau:

gearbox scaffold model mymodel

Lệnh này sẽ tạo model / mymodel.py với lớp newmodel được định nghĩa trong đó.

# -*- 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']

Người dùng hiện có thể thực hiện các sửa đổi trong cấu trúc bảng theo yêu cầu của họ và sau đó nhập nó vào bên trong model/__init__.py để làm cho mô hình có sẵn bên trong ứng dụng.

Để tạo một mô hình, một lớp bộ điều khiển để xử lý nó và một trang chỉ mục, tất cả ba thành phần này có thể được tạo đồng thời bằng lệnh sau.

gearbox scaffold model controller template mymodel

Lệnh này sẽ dẫn đến bộ điều khiển \ mymodel.py trong đó lớp MymodelController được xác định hợp lệ.

# -*- 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')

Để bắt đầu sử dụng bộ điều khiển này, hãy gắn nó vào bên trong ứng dụng RootController của bạn chỉ để xác định một phiên bản của MymodelController. Thêm các dòng này vào bộ điều khiển \ root.py -

From hello.controller.mymodel import MymodelController

class RootController(BaseController): mymodel = MymodelController()

Mẫu giàn giáo mẫu \ mymodel.html cũng sẽ được tạo trong thư mục mẫu. Nó sẽ hoạt động như một trang chỉ mục cho URL '/ mymodel'.

Tạo ra mymodel.html file trong thư mục mẫu sẽ như sau:

<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>