TurboGears - Scaffolding

Gearbox toolkit berisi perintah scaffold, yang sangat berguna untuk membuat komponen baru aplikasi TurboGears dengan cepat. Aplikasi yang dihasilkan oleh perintah quickstart dari gearbox memiliki kerangka kerangka di folder model (model.py.template), folder templat (templat.html.template) dan folder pengontrol (controller.py.template). File '.template' ini digunakan sebagai dasar untuk membuat perancah baru untuk aplikasi

Misalnya, untuk membuat model baru bernama mymodel, cukup jalankan perintah berikut -

gearbox scaffold model mymodel

Perintah ini akan menghasilkan model / mymodel.py dengan kelas model baru yang ditentukan di dalamnya.

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

Pengguna sekarang dapat membuat modifikasi dalam struktur tabel sesuai kebutuhan mereka dan kemudian mengimpornya ke dalam model/__init__.py untuk membuat model tersedia di dalam aplikasi.

Untuk membuat model, kelas pengontrol untuk menanganinya dan halaman indeks, ketiga komponen ini dapat dibuat secara bersamaan dengan perintah berikut.

gearbox scaffold model controller template mymodel

Perintah ini akan menghasilkan controllers \ mymodel.py di mana kelas MymodelController didefinisikan dengan semestinya.

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

Untuk mulai menggunakan pengontrol ini, pasang di dalam aplikasi Anda RootController hanya untuk mendefinisikan sebuah instance dari MymodelController. Tambahkan baris-baris ini ke dalam controllers \ root.py -

From hello.controller.mymodel import MymodelController

class RootController(BaseController): mymodel = MymodelController()

Template scaffold templates \ mymodel.html juga akan dibuat di folder templates. Ini akan bertindak sebagai halaman indeks untuk URL '/ mymodel'.

Yang dihasilkan mymodel.html file di folder template akan menjadi sebagai berikut -

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