TurboGears - टेम्पलेट्स की सेवा

एक ईवेंट हालांकि HTML सामग्री को ब्राउज़र में लौटाया जा सकता है, अधिक उन्नत आउटपुट के लिए, टेम्पलेट इंजन का उपयोग हमेशा पसंद किया जाता है। गियरबॉक्स द्वारा पूर्ण स्टैक प्रोजेक्ट 'क्विकस्टार्टेड' में, Genshi को डिफ़ॉल्ट टेम्पलेट रेंडरर के रूप में सक्षम किया गया है। एक न्यूनतम आवेदन में, हालांकि गेन्शी (या किसी अन्य टेम्पलेट इंजन, जैसे कि जिंजा) को स्थापित करने और सक्षम करने की आवश्यकता है। जेनशी टेम्प्लेट इंजन शुद्ध एक्सएचटीएमएल में टेम्प्लेट लिखने की अनुमति देता है और उन्हें संकलन समय पर मुद्दों का पता लगाने और टूटे पृष्ठों की सेवा को रोकने के लिए मान्य करता है।

डॉटेड नोटेशन का उपयोग करके टेम्पलेट्स को संदर्भित किया जाता है। हमारे हैलो प्रोजेक्ट में टेम्प्लेट वेब पेज को स्टोर करने के लिए एक टेम्प्लेट डायरेक्टरी दी गई है। इसलियेsample.html के रूप में संदर्भित किया जाएगा hello.templates.sample(विस्तार का उल्लेख नहीं)। TurboGears द्वारा इस टेम्पलेट को एक एक्सपोजर डेकोरेटर के माध्यम से इसके द्वारा नियंत्रक विधि को जोड़ने के लिए प्रदान करता हैtg.render_template() समारोह।

उजागर नियंत्रक फ़ंक्शन एक पायथन डिक्शनरी ऑब्जेक्ट देता है। यह डिक्शनरी ऑब्जेक्ट लिंक किए गए टेम्प्लेट को चालू करने के लिए है। टेम्पलेट में प्लेसहोल्डर शब्दकोश मूल्यों से भरे हुए हैं।

शुरुआत करने के लिए, आइए हम सादे html स्क्रिप्ट के साथ एक वेब पेज प्रदर्शित करें। उजागर नियंत्रक एक रिटर्नnull dictionary object जैसा कि हम HTML स्क्रिप्ट के अंदर पार्स होने के लिए कोई डेटा भेजने का इरादा नहीं रखते हैं।

कैसे एक नमूना HTML बनाने के लिए

हमारी sample.htmlनीचे दिया गया है। सुनिश्चित करें कि यह प्रोजेक्ट की टेम्प्लेट डायरेक्टरी में संग्रहित है।

<html>
   <head>
      <title>TurboGears Templating Example</title>
   </head>
	
   <body>
      <h2>Hello, Welcome to TurboGears!.</h2>
   </body>
</html>

जोड़ना sample() में कार्य करते हैं root.py और इसके माध्यम से sample.html को उजागर करें।

@expose("hello.templates.sample")
   def sample(self):
      return {}

URL के बाद ब्राउज़र में निम्न परिणाम प्रदर्शित किया जाएगा http://localhost:8080/sample वेब सर्वर शुरू करने के बाद दर्ज किया जाता है।

जैसा कि ऊपर उल्लेख किया गया है, एक शब्दकोश वस्तु को एक Genshi टेम्पलेट के मापदंडों के संग्रह के रूप में भेजा जाता है। इस टेम्प्लेट में 'प्लेस होल्डर्स' होते हैं, जो नियंत्रक से प्राप्त मापदंडों से गतिशील रूप से भरे होते हैं।

हमें बदलने दो sample() नमूना टेम्पलेट में एक शब्दकोश वस्तु भेजने के लिए समारोह।

@expose("hello.templates.sample")
   def sample(self,name):
      mydata = {'person':name}
      return mydata

सृजन करना sample.html टेम्पलेट फ़ोल्डर में (templates\sample.html)

<html>
   <head>
      <title>TurboGears Templating Example</title>
   </head>
	
   <body>
      <h2>Hello, my name is ${person}!.</h2>
   </body>
</html>

उपरोक्त HTML कोड में, ${person}प्लेसहोल्डर है। दर्जhttp://localhost:8080/sample?name=MVLब्राउज़र में URL के रूप में। इस URL को मैप किया गया हैsample()हमारे रूट कंट्रोलर में विधि। यह एक शब्दकोश वस्तु देता है। इसे टेम्प्लेट डायरेक्टरी में लिंक्ड टेंप्लेट पेज नमूना.html द्वारा उठाया गया है। $ {व्यक्ति} को तब वेब पेज में MVL द्वारा प्रतिस्थापित किया जाता है।

नियंत्रक फ़ंक्शन में HTML फॉर्म डेटा तक पहुंचना भी संभव है। HTML फॉर्म फॉर्म डेटा भेजने के लिए उपयोग करता है।