TurboGears - Hierarki URL

Terkadang, aplikasi web mungkin memerlukan struktur URL yang memiliki lebih dari satu level. TurboGears dapat melintasi hierarki objek untuk menemukan metode yang sesuai yang dapat menangani permintaan Anda.

Sebuah proyek 'quickstarted' dengan gearbox memiliki kelas BaseController di folder lib proyek. Ini tersedia sebagai 'Hello / hello / lib / base.py'. Ini berfungsi sebagai kelas dasar untuk semua sub pengontrol. Untuk menambahkan sub level URL dalam aplikasi, desain sub kelas yang disebut BlogController berasal dari BaseController.

BlogController ini memiliki dua fungsi pengontrol, index () dan post (). Keduanya didesain untuk mengekspos template masing-masing, blog.html dan post.html.

Note - Template ini dimasukkan ke dalam sub folder - 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}

Sekarang deklarasikan objek dari kelas ini di kelas RootController (di root.py) sebagai berikut -

class RootController(BaseController):
   blog = BlogController()

Fungsi pengontrol lain untuk URL tingkat atas akan ada di kelas ini seperti sebelumnya.

Saat URL http://localhost:8080/blog/dimasukkan, itu akan dipetakan ke fungsi pengontrol index () di dalam kelas BlogController. Demikian pula,http://localhost:8080/blog/post akan memanggil fungsi post ().

Kode untuk blog.html dan post.html adalah sebagai berikut -

Blog.html

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

post.html

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

Saat URL http://localhost:8080/blog/ dimasukkan, itu akan menghasilkan output berikut -

Saat URL http://localhost:8080/blog/post dimasukkan, itu akan menghasilkan output berikut -