TurboGears - metody HTTP

Protokół HTTP to podstawa komunikacji danych w sieci WWW. W tym protokole zdefiniowano różne metody pobierania danych z określonego adresu URL. Poniższa tabela zawiera podsumowanie różnych metod HTTP -

Sr.No. Metody i opis HTTP
1

GET

Wysyła dane w niezaszyfrowanej formie na serwer. Najpopularniejsza metoda.

2

HEAD

To samo co GET, ale bez treści odpowiedzi

3

POST

Służy do wysyłania danych formularza HTML na serwer. Dane otrzymane metodą POST nie są buforowane przez serwer.

4

PUT

Zastępuje wszystkie bieżące reprezentacje zasobu docelowego przesłaną treścią.

5

DELETE

Usuwa wszystkie bieżące reprezentacje zasobu docelowego podane przez adres URL

Tworzenie formularza HTML

Stwórzmy formularz HTML i wyślij dane formularza na adres URL. Zapisz następujący skrypt jako login.html

<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>

Dane wpisane w formularzu należy przesłać do ‘/login’ URL. Teraz utwórz funkcję kontroleraloginpage() i ujawnij mu powyższą stronę HTML.

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

Aby otrzymać dane formularza, podaj a login()kontroler, który ma atrybuty formularza jako parametry. Tutaj‘nm’ to nazwa pola wprowadzania tekstu w formularzu logowania, tak samo jak parametr funkcji login ().

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

Jak widać, dane otrzymane z formularza logowania są przesyłane do szablonu sample.html (używanego wcześniej). Jest analizowany przez plikGenshi template engine wygenerować następujący wynik -

Metoda POST

Gdy formularz HTML używa metody POST do wysyłania danych do adresu URL w atrybucie akcji, dane formularza nie są ujawniane w adresie URL. Zakodowane dane są odbierane w formaciedictargument przez funkcję kontrolera. **kw argumentem poniżej jest obiekt słownika przechowujący dane.

Formularz HTML zawiera dwa wejściowe pola tekstowe.

<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>

Plik marks() Administrator otrzymuje dane formularza i przesyła je do sample.htmlszablon. Kod dlaroot.py wygląda następująco -

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

Na koniec szablon sample.html wygląda następująco -

<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>

Uruchom serwer (jeśli jeszcze nie działa)

Gearbox server –reload –debug

Wchodzić http://localhost::8080/marksform w wyszukiwarce

Plik sample.html wyrenderuje następujące wyjście -