TurboGears - Métodos HTTP

El protocolo Http es la base de la comunicación de datos en la red mundial. En este protocolo se definen diferentes métodos de recuperación de datos de URL especificadas. La siguiente tabla resume los diferentes métodos http:

No Señor. Métodos HTTP y descripción
1

GET

Envía datos sin cifrar al servidor. Método más común.

2

HEAD

Igual que GET, pero sin cuerpo de respuesta

3

POST

Se utiliza para enviar datos de formularios HTML al servidor. El servidor no almacena en caché los datos recibidos por el método POST.

4

PUT

Reemplaza todas las representaciones actuales del recurso de destino con el contenido cargado.

5

DELETE

Elimina todas las representaciones actuales del recurso de destino proporcionadas por una URL

Crear un formulario HTML

Creemos un formulario HTML y enviemos los datos del formulario a una URL. Guarde la siguiente secuencia de comandos como 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>

Los datos ingresados ​​en este formulario deben enviarse a ‘/login’ URL. Ahora crea una función de controladorloginpage() y exponga la página html anterior.

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

Para recibir los datos del formulario, proporcione un login()controlador, que tiene atributos de formulario como parámetros. aquí‘nm’ es el nombre del campo de entrada de texto en el formulario de inicio de sesión, el mismo se utiliza como parámetro de la función login ().

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

Como se puede ver, los datos recibidos del formulario de inicio de sesión se envían a la plantilla sample.html (utilizada anteriormente). Es analizado por unGenshi template engine para generar la siguiente salida:

Método POST

Cuando el formulario HTML utiliza el método POST para enviar datos a la URL en el atributo de acción, los datos del formulario no se exponen en la URL. Los datos codificados se reciben en undictargumento por la función del controlador. Los **kw El siguiente argumento es el objeto de diccionario que contiene los datos.

El formulario HTML contiene dos campos de entrada de texto.

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

los marks() El controlador recibe los datos del formulario y los envía a sample.htmlmodelo. Código pararoot.py es como sigue -

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

Finalmente, la plantilla sample.html es la siguiente:

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

Inicie el servidor (si aún no se está ejecutando)

Gearbox server –reload –debug

Entrar http://localhost::8080/marksform en el navegador

los sample.html renderizará la siguiente salida -