TurboGears - Gerarchia URL

A volte, un'applicazione web può richiedere una struttura URL con più di un livello. TurboGears può attraversare la gerarchia degli oggetti per trovare il metodo appropriato in grado di gestire la tua richiesta.

Un progetto "avviato rapidamente" con gearbox ha una classe BaseController nella cartella lib del progetto. È disponibile come "Hello / hello / lib / base.py". Serve come classe base per tutti i sub controller. Per aggiungere un livello secondario di URL nell'applicazione, progettare una sottoclasse chiamata BlogController derivata da BaseController.

Questo BlogController ha due funzioni del controller, index () e post (). Entrambi sono progettati per esporre un modello ciascuno, blog.html e post.html.

Note - Questi modelli vengono inseriti in una sottocartella - modelli / 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}

Ora dichiara un oggetto di questa classe nella classe RootController (in root.py) come segue:

class RootController(BaseController):
   blog = BlogController()

Altre funzioni del controller per gli URL di primo livello saranno presenti in questa classe come in precedenza.

Quando un URL http://localhost:8080/blog/viene inserito, verrà mappato alla funzione controller index () all'interno della classe BlogController. Allo stesso modo,http://localhost:8080/blog/post invocherà la funzione post ().

Il codice per blog.html e post.html è il seguente:

Blog.html

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

post.html

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

Quando un URL http://localhost:8080/blog/ viene inserito, produrrà il seguente output:

Quando un URL http://localhost:8080/blog/post viene inserito, produrrà il seguente output: