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>