TurboGears - Template Penyajian

Sebuah Peristiwa meskipun konten HTML dapat dikembalikan ke browser, untuk keluaran yang lebih maju, penggunaan mesin template selalu lebih disukai. Dalam proyek tumpukan penuh 'quickstarted' oleh gearbox, Genshi diaktifkan sebagai perender template default. Dalam aplikasi minimal, bagaimanapun Genshi (atau mesin template lainnya, seperti jinja) perlu diinstal dan diaktifkan. Mesin template Genshi mengizinkan untuk menulis template dalam xhtml murni dan memvalidasinya untuk mendeteksi masalah pada waktu kompilasi dan mencegah penayangan halaman yang rusak.

Templat dirujuk dengan menggunakan notasi titik-titik. Dalam proyek Hello kami, direktori template disediakan untuk menyimpan halaman web template. Karenanyasample.html akan disebut sebagai hello.templates.sample(ekstensi tidak disebutkan). TurboGears membuat template ini melalui dekorator ekspos untuk menghubungkan metode pengontrol dengan itutg.render_template() fungsi.

Fungsi pengontrol terekspos mengembalikan objek kamus Python. Objek kamus ini pada gilirannya diteruskan ke template yang ditautkan. Placeholder di template diisi dengan nilai kamus.

Untuk memulai, mari kita tampilkan halaman web dengan script html biasa. Kontroler yang terbuka mengembalikan anull dictionary object karena kami tidak bermaksud mengirim data apa pun untuk diurai di dalam skrip HTML.

Cara Membuat Contoh HTML

Kami sample.htmldiberikan di bawah ini. Pastikan itu disimpan dalam direktori template proyek.

<html>
   <head>
      <title>TurboGears Templating Example</title>
   </head>
	
   <body>
      <h2>Hello, Welcome to TurboGears!.</h2>
   </body>
</html>

Menambahkan sample() berfungsi di root.py dan mengekspos sample.html melalui itu.

@expose("hello.templates.sample")
   def sample(self):
      return {}

Hasil berikut akan ditampilkan di browser saat URL http://localhost:8080/sample dimasukkan setelah memulai server web.

Seperti disebutkan di atas, objek kamus dikirim sebagai kumpulan parameter ke template Genshi. Template ini berisi 'placeholder', yang secara dinamis diisi dengan parameter yang diterima dari pengontrol.

Mari kita ubah sample() berfungsi untuk mengirim objek kamus ke templat sampel.

@expose("hello.templates.sample")
   def sample(self,name):
      mydata = {'person':name}
      return mydata

Membuat sample.html di folder template (templates\sample.html)

<html>
   <head>
      <title>TurboGears Templating Example</title>
   </head>
	
   <body>
      <h2>Hello, my name is ${person}!.</h2>
   </body>
</html>

Pada kode HTML di atas, ${person}adalah placeholder. Memasukkanhttp://localhost:8080/sample?name=MVLsebagai URL di browser. URL ini dipetakan kesample()metode di pengontrol root kami. Ini mengembalikan objek kamus. Ini diambil oleh sample.html halaman template tertaut di direktori template. $ {Person} kemudian diganti dengan MVL di halaman web.

Dimungkinkan juga untuk mengakses data formulir HTML dalam fungsi pengontrol. Formulir HTML digunakan untuk mengirim data formulir.