TurboGears – 비계

Gearbox 툴킷에는 TurboGears 애플리케이션의 새 구성 요소를 빠르게 생성하는 데 매우 유용한 scaffold 명령이 포함되어 있습니다. 기어 박스의 빠른 시작 명령으로 생성 된 애플리케이션은 모델 폴더 (model.py.template), 템플릿 폴더 (template.html.template) 및 컨트롤러 폴더 (controller.py.template)에 스켈레톤 템플릿이 있습니다. 이러한 '.template'파일은 애플리케이션을위한 새 스캐 폴드를 만들기위한 기초로 사용됩니다.

예를 들어 mymodel이라는 새 모델을 만들려면 다음 명령을 실행하면됩니다.

gearbox scaffold model mymodel

이 명령은 newmodel 클래스가 정의 된 model / mymodel.py를 생성합니다.

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

이 명령은 MymodelController 클래스가 정식으로 정의 된 controllers \ mymodel.py를 생성합니다.

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

이 컨트롤러를 사용하려면 MymodelController의 인스턴스를 정의하기 위해 응용 프로그램 RootController 내에 마운트하십시오. controllers \ root.py에 다음 줄을 추가하십시오.

From hello.controller.mymodel import MymodelController

class RootController(BaseController): mymodel = MymodelController()

템플릿 스캐 폴드 templates \ mymodel.html도 templates 폴더에 생성됩니다. '/ mymodel'URL에 대한 색인 페이지 역할을합니다.

생성 mymodel.html file 템플릿 폴더에서 다음과 같습니다-

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