TurboGears - Sunum Şablonları
HTML içeriği tarayıcıya döndürülebilmesine rağmen, daha gelişmiş çıktı için şablon motorunun kullanılması her zaman tercih edilir. Gearbox tarafından 'hızlı başlatılan' tam bir yığın projesinde, Genshi varsayılan şablon oluşturucu olarak etkinleştirilir. Ancak minimal bir uygulamada, Genshi'nin (veya jinja gibi başka herhangi bir şablon motorunun) yüklenmesi ve etkinleştirilmesi gerekir. Genshi şablon motoru, saf xhtml'de şablon yazmaya izin verir ve bunları derleme sırasında sorunları tespit etmek ve bozuk sayfaların sunulmasını önlemek için doğrular.
Şablonlar, noktalı gösterim kullanılarak belirtilir. Merhaba projemizde şablon web sayfalarını saklamak için bir şablon dizini sağlanmıştır. Bu nedenlesample.html olarak anılacaktır hello.templates.sample(uzantı belirtilmedi). TurboGears, bu şablonu, açık bir dekoratör aracılığıyla, denetleyici yöntemini ona bağlamak içintg.render_template() işlevi.
Açığa çıkan denetleyici işlevi bir Python sözlük nesnesi döndürür. Bu sözlük nesnesi de bağlantılı şablona aktarılır. Şablondaki yer tutucular sözlük değerleriyle doldurulur.
Başlangıç olarak, düz html komut dosyası içeren bir web sayfası görüntüleyelim. Açığa çıkan kontrolör birnull dictionary object HTML komut dosyası içinde ayrıştırılacak herhangi bir veri göndermek niyetinde değiliz.
Örnek HTML Nasıl Oluşturulur
bizim sample.htmlaşağıda verilmiştir. Projenin şablonlar dizininde saklandığından emin olun.
<html>
<head>
<title>TurboGears Templating Example</title>
</head>
<body>
<h2>Hello, Welcome to TurboGears!.</h2>
</body>
</html>
Ekle sample() işlev root.py ve sample.html'yi bunun üzerinden gösterin.
@expose("hello.templates.sample")
def sample(self):
return {}
Aşağıdaki sonuç, bir URL olduğunda tarayıcıda görüntülenecektir. http://localhost:8080/sample web sunucusu başlatıldıktan sonra girilir.
Yukarıda bahsedildiği gibi, bir sözlük nesnesi bir Genshi şablonuna parametreler koleksiyonu olarak gönderilir. Bu şablon, kontrolörden alınan parametrelerle dinamik olarak doldurulan 'yer tutucuları' içerir.
Değiştirelim sample() örnek şablona bir sözlük nesnesi göndermek için işlev.
@expose("hello.templates.sample")
def sample(self,name):
mydata = {'person':name}
return mydata
Oluşturmak sample.html şablonlar klasöründe (templates\sample.html)
<html>
<head>
<title>TurboGears Templating Example</title>
</head>
<body>
<h2>Hello, my name is ${person}!.</h2>
</body>
</html>
Yukarıdaki HTML kodunda, ${person}yer tutucudur. Girişhttp://localhost:8080/sample?name=MVLtarayıcıda URL olarak. Bu URL ile eşleştirildisample()Kök denetleyicimizde yöntem. Bir sözlük nesnesi döndürür. Bu, şablonlar dizinindeki bağlantılı şablon sayfası sample.html tarafından seçilir. $ {Person} daha sonra web sayfasında MVL ile değiştirilir.
HTML form verilerine bir denetleyici işlevinde erişmek de mümkündür. HTML formu, form verilerini göndermek için kullanır.