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 -