TurboGears - HTTP Yöntemleri
Http Protokolü, dünya çapında ağda veri iletişiminin temelidir. Bu protokolde belirtilen URL'den farklı veri alma yöntemleri tanımlanmıştır. Aşağıdaki tablo farklı http yöntemlerini özetlemektedir -
Sr.No. | HTTP Yöntemleri ve Açıklaması |
---|---|
1 | GET Verileri şifrelenmemiş biçimde sunucuya gönderir. En yaygın yöntem. |
2 | HEAD GET ile aynı, ancak yanıt gövdesi yok |
3 | POST HTML form verilerini sunucuya göndermek için kullanılır. POST yöntemi ile alınan veriler sunucu tarafından önbelleğe alınmaz. |
4 | PUT Hedef kaynağın tüm mevcut temsillerini yüklenen içerikle değiştirir. |
5 | DELETE Bir URL tarafından verilen hedef kaynağın tüm mevcut temsillerini kaldırır |
Bir HTML Formu Oluşturmak
Bir HTML Formu oluşturalım ve form verilerini bir URL'ye gönderelim. Aşağıdaki komut dosyasını login.html olarak kaydedin
<html>
<body>
<form action = "http://localhost:8080/login" method = "get">
<p>Enter Name:</p>
<p><input type = "text" name = "nm" /></p>
<p><input type = "submit" value = "submit" /></p>
</form>
</body>
</html>
Bu forma girilen veriler şu adrese gönderilecektir: ‘/login’ URL. Şimdi bir kontrolör işlevi oluşturunloginpage() ve yukarıdaki html sayfasını ona gösterin.
@expose("hello.templates.login")
def loginpage(self):
return {}
Form verilerini almak için bir login()parametreleri olarak form özniteliklerine sahip denetleyici. Buraya‘nm’ giriş formundaki metin giriş alanının adıdır, aynı, login () fonksiyonunun bir parametresi olarak kullanılır.
@expose("hello.templates.sample")
def login(self, nm):
name = nm
return {'person':name}
Görüldüğü üzere giriş formundan alınan veriler sample.html şablonuna (daha önce kullanılmış) gönderilmektedir. Tarafından ayrıştırılırGenshi template engine aşağıdaki çıktıyı üretmek için -
POST Yöntemi
HTML formu, verileri eylemdeki URL'ye göndermek için POST yöntemini kullandığında, form verileri URL'de gösterilmez. Kodlanmış veriler birdictdenetleyici işlevi tarafından bağımsız değişken. **kw Aşağıdaki argüman, veri için tutan sözlük nesnesidir.
HTML formu iki giriş metin alanı içerir.
<html>
<body>
<form action = "http://localhost:8080/marks" method = "post">
<p>Marks in Physics:</p>
<p><input type = "text" name = "phy" /></p>
<p>Marks in Maths:</p>
<p><input type = "text" name = "maths" /></p>
<p><input type = "submit" value = "submit" /></p>
</form>
</body>
</html>
marks() denetleyici, form verilerini alır ve gönderir sample.htmlşablonu. Kodroot.py aşağıdaki gibidir -
from hello.lib.base import BaseController
from tg import expose, request
class RootController(BaseController):
@expose("hello.templates.marks")
def marksform(self):
return {}
@expose("hello.templates.sample")
def marks(self, **kw):
phy = kw['phy']
maths = kw['maths']
ttl = int(phy)+int(maths)
mydata = {'phy':phy, 'maths':maths, 'total':ttl}
return mydata
Son olarak, sample.html şablonu aşağıdaki gibidir -
<html>
<head>
<title>TurboGears Templating Example</title>
</head>
<body>
<h2>Hello, Welcome to TurboGears!.</h2>
<h3>Marks in Physics: ${phy}.</h3>
<h3>Marks in Maths: ${maths}.</h3>
<h3>Total Marks: ${total}</h3>
</body>
</html>
Sunucuyu başlatın (zaten çalışmıyorsa)
Gearbox server –reload –debug
Giriş http://localhost::8080/marksform tarayıcıda
sample.html aşağıdaki çıktıyı oluşturacak -