TurboGears - Méthodes HTTP

Le protocole Http est la base de la communication de données sur le World Wide Web. Différentes méthodes de récupération de données à partir de l'URL spécifiée sont définies dans ce protocole. Le tableau suivant résume les différentes méthodes http -

N ° Sr. Méthodes HTTP et description
1

GET

Envoie les données sous forme non chiffrée au serveur. Méthode la plus courante.

2

HEAD

Identique à GET, mais sans corps de réponse

3

POST

Utilisé pour envoyer des données de formulaire HTML au serveur. Les données reçues par la méthode POST ne sont pas mises en cache par le serveur.

4

PUT

Remplace toutes les représentations actuelles de la ressource cible par le contenu téléchargé.

5

DELETE

Supprime toutes les représentations actuelles de la ressource cible données par une URL

Créer un formulaire HTML

Créons un formulaire HTML et envoyons les données du formulaire à une URL. Enregistrez le script suivant sous 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>

Les données saisies dans ce formulaire doivent être soumises à ‘/login’ URL. Créez maintenant une fonction de contrôleurloginpage() et exposez-y la page html ci-dessus.

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

Pour recevoir les données du formulaire, fournissez un login()controller, qui a des attributs de formulaire comme paramètres. Ici‘nm’ est le nom du champ de saisie de texte dans le formulaire de connexion, le même est utilisé comme paramètre de la fonction login ().

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

Comme on peut le voir, les données reçues du formulaire de connexion sont envoyées au modèle sample.html (utilisé précédemment). Il est analysé par unGenshi template engine pour générer la sortie suivante -

Méthode POST

Lorsque le formulaire HTML utilise la méthode POST pour envoyer des données à l'attribut URL dans l'action, les données du formulaire ne sont pas exposées dans l'URL. Les données codées sont reçues dans undictargument par la fonction de contrôleur. Le **kw L'argument ci-dessous est l'objet dictionnaire contenant les données.

Le formulaire HTML contient deux champs de texte d'entrée.

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

le marks() le responsable du traitement reçoit les données du formulaire et les envoie à sample.htmlmodèle. Code pourroot.py est comme suit -

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

Enfin, le modèle sample.html est le suivant -

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

Démarrez le serveur (s'il n'est pas déjà en cours d'exécution)

Gearbox server –reload –debug

Entrer http://localhost::8080/marksform dans le navigateur

le sample.html rendra la sortie suivante -