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 -