TurboGears - Hiérarchie des URL

Parfois, une application Web peut nécessiter une structure d'URL comportant plusieurs niveaux. TurboGears peut parcourir la hiérarchie d'objets pour trouver la méthode appropriée qui peut gérer votre demande.

Un projet «quickstarted» avec gearbox a une classe BaseController dans le dossier lib du projet. Il est disponible sous le nom 'Hello / hello / lib / base.py'. Il sert de classe de base pour tous les sous-contrôleurs. Afin d'ajouter un sous-niveau d'URL dans l'application, concevez une sous-classe appelée BlogController dérivée de BaseController.

Ce BlogController a deux fonctions de contrôleur, index () et post (). Les deux sont conçus pour exposer chacun un modèle, blog.html et post.html.

Note - Ces modèles sont placés dans un sous-dossier - templates / 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}

Déclarez maintenant un objet de cette classe dans la classe RootController (dans root.py) comme suit -

class RootController(BaseController):
   blog = BlogController()

D'autres fonctions de contrôleur pour les URL de niveau supérieur seront présentes dans cette classe comme précédemment.

Quand une URL http://localhost:8080/blog/est entré, il sera mappé à la fonction du contrôleur index () dans la classe BlogController. De même,http://localhost:8080/blog/post invoquera la fonction post ().

Le code pour blog.html et post.html est comme ci-dessous -

Blog.html

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

post.html

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

Quand une URL http://localhost:8080/blog/ est entré, il produira la sortie suivante -

Quand une URL http://localhost:8080/blog/post est entré, il produira la sortie suivante -