TurboGears - URL पदानुक्रम

कभी-कभी, एक वेब एप्लिकेशन को एक URL संरचना की आवश्यकता हो सकती है जो एक से अधिक स्तर की हो। TurboGears ऑब्जेक्ट पदानुक्रम को उचित विधि खोजने के लिए पार कर सकता है जो आपके अनुरोध को संभाल सकता है।

गियरबॉक्स के साथ एक प्रोजेक्ट 'क्विकस्टार्टेड' में प्रोजेक्ट के लिब फोल्डर में बेसकंट्रोलर क्लास है। यह 'हेलो / हैलो / लीब / बेसड्रोमा' के रूप में उपलब्ध है। यह सभी उप नियंत्रकों के लिए आधार वर्ग के रूप में कार्य करता है। एप्लिकेशन में URL का एक उप-स्तर जोड़ने के लिए, BaseController से व्युत्पन्न BlogController नामक एक उप वर्ग डिज़ाइन करें।

इस BlogController में दो नियंत्रक कार्य, सूचकांक () और पोस्ट () हैं। दोनों को एक-एक टेम्पलेट, blog.html और post.html को उजागर करने के लिए डिज़ाइन किया गया है।

Note - ये टेम्प्लेट एक सब फोल्डर के अंदर डाले जाते हैं - टेम्प्लेट / ब्लॉग

class BlogController(BaseController):

   @expose('hello.templates.blog.blog')
   def index(self):
      return {}
		
   @expose('hello.templates.blog.post')
   def post(self):
      from datetime import date
      now = date.today().strftime("%d-%m-%y")
      return {'date':now}

अब RootController class (root.py) में इस वर्ग की एक वस्तु घोषित करें -

class RootController(BaseController):
   blog = BlogController()

शीर्ष स्तर के URL के लिए अन्य नियंत्रक कार्य इस कक्षा में पहले की तरह होंगे।

जब एक यू.आर.एल. http://localhost:8080/blog/दर्ज किया गया है, इसे BlogController क्लास के अंदर इंडेक्स () कंट्रोलर फंक्शन में मैप किया जाएगा। इसी तरह,http://localhost:8080/blog/post पोस्ट () फ़ंक्शन को लागू करेगा।

Blog.html और post.html का कोड इस प्रकार है -

Blog.html

<html>
   <body>
      <h2>My Blog</h2>
   </body>
</html>

post.html

<html>
   <body>
      <h2>My new post dated $date</h2>
   </body>
</html>

जब एक यू.आर.एल. http://localhost:8080/blog/ दर्ज किया गया है, यह निम्नलिखित उत्पादन का उत्पादन करेगा -

जब एक यू.आर.एल. http://localhost:8080/blog/post दर्ज किया गया है, यह निम्नलिखित उत्पादन का उत्पादन करेगा -