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 -