TurboGears - URL-Hierarchie

Manchmal erfordert eine Webanwendung eine URL-Struktur mit mehr als einer Ebene. TurboGears kann die Objekthierarchie durchlaufen, um eine geeignete Methode zu finden, die Ihre Anforderung verarbeiten kann.

Ein Projekt, das mit einem Getriebe schnell gestartet wurde, verfügt über eine BaseController-Klasse im lib-Ordner des Projekts. Es ist als 'Hallo / Hallo / lib / base.py' verfügbar. Es dient als Basisklasse für alle Subcontroller. Entwerfen Sie eine von BaseController abgeleitete Unterklasse namens BlogController, um der Anwendung eine URL-Unterebene hinzuzufügen.

Dieser BlogController verfügt über zwei Controller-Funktionen, index () und post (). Beide sind so konzipiert, dass jeweils eine Vorlage, blog.html und post.html, verfügbar gemacht wird.

Note - Diese Vorlagen werden in einem Unterordner abgelegt - Vorlagen / Blog

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}

Deklarieren Sie nun ein Objekt dieser Klasse in der RootController-Klasse (in root.py) wie folgt:

class RootController(BaseController):
   blog = BlogController()

Andere Controller-Funktionen für URLs der obersten Ebene sind in dieser Klasse wie zuvor vorhanden.

Wenn eine URL http://localhost:8080/blog/Wenn es eingegeben wird, wird es der index () - Controller-Funktion innerhalb der BlogController-Klasse zugeordnet. Ähnlich,http://localhost:8080/blog/post ruft die Funktion post () auf.

Der Code für blog.html und post.html lautet wie folgt:

Blog.html

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

post.html

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

Wenn eine URL http://localhost:8080/blog/ eingegeben wird, wird die folgende Ausgabe erzeugt -

Wenn eine URL http://localhost:8080/blog/post eingegeben wird, wird die folgende Ausgabe erzeugt -