TurboGears - HTTP-Methoden
Das HTTP-Protokoll ist die Grundlage der Datenkommunikation im World Wide Web. In diesem Protokoll werden verschiedene Methoden zum Abrufen von Daten von der angegebenen URL definiert. Die folgende Tabelle fasst verschiedene http-Methoden zusammen -
Sr.Nr. | HTTP-Methoden und Beschreibung |
---|---|
1 | GET Sendet Daten in unverschlüsselter Form an den Server. Häufigste Methode. |
2 | HEAD Wie GET, jedoch ohne Antwortkörper |
3 | POST Wird zum Senden von HTML-Formulardaten an den Server verwendet. Von der POST-Methode empfangene Daten werden vom Server nicht zwischengespeichert. |
4 | PUT Ersetzt alle aktuellen Darstellungen der Zielressource durch den hochgeladenen Inhalt. |
5 | DELETE Entfernt alle aktuellen Darstellungen der Zielressource, die durch eine URL angegeben werden |
Erstellen eines HTML-Formulars
Lassen Sie uns ein HTML-Formular erstellen und Formulardaten an eine URL senden. Speichern Sie das folgende Skript als 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>
Die in diesem Formular eingegebenen Daten sind zu übermitteln ‘/login’ URL. Erstellen Sie nun eine Controller-Funktionloginpage() und machen Sie die obige HTML-Seite dafür verfügbar.
@expose("hello.templates.login")
def loginpage(self):
return {}
Geben Sie a an, um die Formulardaten zu erhalten login()Controller, dessen Parameter Formularattribute sind. Hier‘nm’ Ist der Name des Texteingabefelds in Anmeldeform, wird dieser als Parameter der Funktion login () verwendet.
@expose("hello.templates.sample")
def login(self, nm):
name = nm
return {'person':name}
Wie zu sehen ist, werden die vom Anmeldeformular empfangenen Daten an die Vorlage sample.html (früher verwendet) gesendet. Es wird von a analysiertGenshi template engine um die folgende Ausgabe zu generieren -
POST-Methode
Wenn das HTML-Formular die POST-Methode verwendet, um Daten an die URL im Aktionsattribut zu senden, werden die Formulardaten in der URL nicht verfügbar gemacht. Die codierten Daten werden in a empfangendictArgument der Controller-Funktion. Das **kw Das folgende Argument ist das Wörterbuchobjekt, das Daten enthält.
Das HTML-Formular enthält zwei Eingabetextfelder.
<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>
Das marks() Der Controller empfängt Formulardaten und sendet sie an sample.htmlVorlage. Code fürroot.py ist wie folgt -
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
Schließlich lautet die Vorlage sample.html wie folgt:
<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>
Starten Sie den Server (falls noch nicht ausgeführt)
Gearbox server –reload –debug
Eingeben http://localhost::8080/marksform im Browser
Das sample.html wird folgende Ausgabe rendern -