TurboGears - Plantillas de servicio

Un evento, aunque el contenido HTML se puede devolver al navegador, para una salida más avanzada, siempre se prefiere el uso del motor de plantillas. En un proyecto de pila completa 'iniciado rápido' por gearbox, Genshi está habilitado como el renderizador de plantilla predeterminado. En una aplicación mínima, sin embargo, Genshi (o cualquier otro motor de plantilla, como jinja) debe estar instalado y habilitado. El motor de plantillas de Genshi permite escribir plantillas en xhtml puro y las valida para detectar problemas en el momento de la compilación y evitar la publicación de páginas rotas.

Se hace referencia a las plantillas mediante una notación de puntos. En nuestro proyecto Hello, se proporciona un directorio de plantillas para almacenar páginas web de plantillas. Por lo tantosample.html será referido como hello.templates.sample(extensión no mencionada). TurboGears renderiza esta plantilla a través de un decorador de exposición para vincular el método del controlador contg.render_template() función.

La función de controlador expuesta devuelve un objeto de diccionario de Python. Este objeto de diccionario se pasa a su vez a la plantilla vinculada. Los marcadores de posición en la plantilla están llenos de valores de diccionario.

Para empezar, vamos a mostrar una página web con un script html simple. El controlador expuesto devuelve unnull dictionary object ya que no tenemos la intención de enviar ningún dato para que se analice dentro del script HTML.

Cómo crear un HTML de muestra

Nuestra sample.htmlse da a continuación. Asegúrese de que esté almacenado en el directorio de plantillas del proyecto.

<html>
   <head>
      <title>TurboGears Templating Example</title>
   </head>
	
   <body>
      <h2>Hello, Welcome to TurboGears!.</h2>
   </body>
</html>

Añadir sample() funcionar en root.py y exponer sample.html a través de él.

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

El siguiente resultado se mostrará en el navegador cuando una URL http://localhost:8080/sample se ingresa después de iniciar el servidor web.

Como se mencionó anteriormente, un objeto de diccionario se envía como una colección de parámetros a una plantilla Genshi. Esta plantilla contiene 'marcadores de posición', que se llenan dinámicamente con los parámetros recibidos del controlador.

Cambiemos el sample() función para enviar un objeto de diccionario a la plantilla de muestra.

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

Crear sample.html en la carpeta de plantillastemplates\sample.html)

<html>
   <head>
      <title>TurboGears Templating Example</title>
   </head>
	
   <body>
      <h2>Hello, my name is ${person}!.</h2>
   </body>
</html>

En el código HTML anterior, ${person}es el marcador de posición. Entrarhttp://localhost:8080/sample?name=MVLcomo URL en el navegador. Esta URL está asignada asample()método en nuestro controlador raíz. Devuelve un objeto de diccionario. Esto se selecciona mediante la página de plantilla vinculada sample.html en el directorio de plantillas. Luego, MVL sustituye a $ {person} en la página web.

También es posible acceder a los datos del formulario HTML en una función de controlador. El formulario HTML se utiliza para enviar datos del formulario.