TurboGears - निर्भरताएँ

एक TurboGears परियोजना में निम्नलिखित निर्देशिकाएं शामिल हैं -

  • Config - जहां प्रोजेक्ट सेटअप और कॉन्फ़िगरेशन निर्भर करता है

  • Controllers - सभी परियोजना नियंत्रक, वेब अनुप्रयोग का तर्क

  • i018n - समर्थित भाषाओं के लिए अनुवाद फाइलें

  • Lib - उपयोगिता अजगर कार्यों और कक्षाएं

  • Model - डेटाबेस

  • Public Static Files - सीएसएस, जावास्क्रिप्ट और छवियों

  • Templates - हमारे नियंत्रकों द्वारा उजागर किए गए टेम्प्लेट।

  • Tests - टेस्ट का सेट।

  • Websetup - आवेदन सेटअप में निष्पादित करने के लिए कार्य।

किसी प्रोजेक्ट को कैसे स्थापित करें

इस परियोजना को अब स्थापित करने की आवश्यकता है। एsetup.pyपरियोजना के आधार निर्देशिका में पहले से ही प्रदान किया गया है। यह स्क्रिप्ट निष्पादित होने पर प्रोजेक्ट निर्भरताएँ स्थापित हो जाती हैं।

Python setup.py develop

डिफ़ॉल्ट रूप से, निम्नलिखित आश्रितों को स्थापित परियोजना के समय स्थापित किया जाता है -

  • Beaker
  • Genshi
  • zope.sqlalchemy
  • sqlalchemy
  • alembic
  • repoze.who
  • tw2.forms
  • tgext.admin min 0.6.1
  • WebHelpers2
  • babel

स्थापना के बाद, शेल में निम्नलिखित आदेश जारी करके विकास सर्वर पर परियोजना की सेवा शुरू करें -

Gearbox serve –reload –debug

पूर्व-निर्मित उदाहरण परियोजना की सेवा के लिए उपर्युक्त आदेश का पालन करें। खुला हुआhttp://localhost:8080ब्राउजर में। यह रेडीमेड नमूना आवेदन खुद टर्बोबियर्स ढांचे के बारे में एक संक्षिप्त परिचय देता है।

इस हैलो प्रोजेक्ट में, कंट्रोलर डाइरेक्टरी में डिफॉल्ट कंट्रोलर बनाया जाता है Hello/hello/controllers.root.py। हमें करने दोmodify root.py निम्नलिखित कोड के साथ -

from hello.lib.base import BaseController
from tg import expose, flash

class RootController(BaseController):
   movie = MovieController()
   @expose()
   def index(self):
      return "<h1>Hello World</h1>"
		
   @expose()
   def _default(self, *args, **kw):
      return "This page is not ready"

एक बार काम करने की एक बुनियादी प्रक्रिया तैयार हो जाने के बाद, नियंत्रक वर्ग में अधिक विचार जोड़े जा सकते हैं। मेंMycontroller ऊपर कक्षा, एक नई विधि sayHello()जोड़ दिया गया है। @expose() डेकोरेटर अटैच करता है /sayHelloइसके लिए यूआरएल। यह फ़ंक्शन URL से पैरामीटर के रूप में एक नाम स्वीकार करने के लिए डिज़ाइन किया गया है।

'गियरबॉक्स सर्व' कमांड के माध्यम से सर्वर शुरू करने के बाद, http://localhost:8080। नमस्ते विश्व संदेश ब्राउज़र में प्रदर्शित किया जाएगा, भले ही निम्न URL दर्ज किए गए हों -

http://localhost:8080/

http://localhost:8080/index

इन सभी URL को मैप किया जाता है RootController.index()तरीका। इस वर्ग में भी है_default()जब भी किसी URL को किसी विशिष्ट फ़ंक्शन के लिए मैप नहीं किया जाता है, तो विधि को लागू किया जाएगा। URL की प्रतिक्रिया @expose () डेकोरेटर द्वारा फ़ंक्शन के लिए मैप की जाती है।

URL से एक उजागर फ़ंक्शन के लिए एक पैरामीटर भेजना संभव है। निम्न फ़ंक्शन URL से नाम पैरामीटर पढ़ता है।

@expose()
def sayHello(self, name):
   return '<h3>Hello %s</h3>' %name

निम्नलिखित आउटपुट ब्राउज़र में URL की प्रतिक्रिया के रूप में देखा जाएगा - http://localhost:8080/?name=MVL

Hello MVL

TurboGears तर्कों को कार्य करने के लिए स्वचालित रूप से URL मापदंडों को मैप करता है। हमारा रूटकंट्रोलर वर्ग बेसकंट्रोलर से विरासत में मिला है। इसे इस रूप में परिभाषित किया गया हैbase.py में lib folder आवेदन का।

इसका कोड इस प्रकार है -

from tg import TGController, tmpl_context
from tg import request

__all__ = ['BaseController']

def __call__(self, environ, context):
   tmpl_context.identity = request.identity
   return TGController.__call__(self, environ, context)

TGController.__call__ अनुरोध विधि के लिए नियंत्रक विधि को प्रेषित किया जाता है।