TurboGears - मचान

गियरबॉक्स टूलकिट में पाड़ कमांड होता है, जो टर्बोगियर्स एप्लिकेशन के नए घटकों को जल्दी से बनाने के लिए बहुत उपयोगी है। गियरबॉक्स के क्विकस्टार्ट कमांड द्वारा उत्पन्न एक एप्लिकेशन में मॉडल फ़ोल्डर (मॉडल ओरिजिन.नेटमप्लेट), एक टेम्प्लेट फ़ोल्डर (टेम्पलेट.html। टेमप्लेट) और एक नियंत्रक फ़ोल्डर (कंट्रोलर। टमप्लेट) में एक कंकाल टेम्पलेट है। इन '.template' फ़ाइलों को एक अनुप्रयोग के लिए नए मचान बनाने के लिए आधार के रूप में उपयोग किया जाता है

उदाहरण के लिए, mymodel नामक एक नया मॉडल बनाने के लिए, बस निम्नलिखित कमांड चलाएँ -

gearbox scaffold model mymodel

यह कमांड मॉडल / 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

इस आदेश के परिणामस्वरूप नियंत्रकों \ 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')

इस नियंत्रक का उपयोग शुरू करने के लिए, इसे अपने एप्लिकेशन रूटकंट्रोलर के अंदर माउंट करें बस MymodelController की एक आवृत्ति को परिभाषित करें। कंट्रोलर \ root.py - में इन पंक्तियों को जोड़ें

From hello.controller.mymodel import MymodelController

class RootController(BaseController): mymodel = MymodelController()

टेम्प्लेट फ़ोल्डर में एक टेम्प्लेट मचान टेम्पलेट \ mymodel.html भी बनाया जाएगा। यह '/ 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>