2011-01-12 15 views
19

Tengo cinco páginas con el mismo diseño y estructura de página, pero con colores, texto, etc. diferentes, por lo que este es un entorno ideal para la creación de plantillas. Decidí usar Jinja2 y probablemente matraz. He leído la documentación y algunos tutoriales en línea, que explican mucho sobre lo que puede hacer con las plantillas en una página, pero no mucho sobre cómo enviar variables a la página.¿Dónde almacena las variables en jinja?

  • ¿Dónde almacena las variables específicas de la página?
  • ¿Cómo sabe el código qué página se ha solicitado y qué variables cargar?
+1

frasco es una buena opción. Y su tutorial responde más o menos a sus preguntas: http://flask.pocoo.org/docs/quickstart/#rendering-templates. También tenga en cuenta cómo '@ app.route' define la URL. – 9000

+0

Gracias, así que tendría un script de python para cada página, declararía las variables dentro de cada script de python, y luego las pasaría a template.render? –

Respuesta

48

Aquí está el uso básico:

En primer lugar crear una plantilla

>>> from jinja2 import Template 
>>> template = Template('Hello {{ name }}!') 

Entonces la hacen pasar las variables

>>> template.render(name='John Doe') 
u'Hello John Doe!' 

Por lo general, tendrá que cargar plantillas de archivos en lugar de código. Eso es más eficiente y optimizado, y permite herencia de plantillas:

from jinja2 import Environment, PackageLoader 
env = Environment(loader=PackageLoader('yourapplication', 'templates')) 

que buscará las plantillas dentro de la carpeta templates del paquete Python yourapplication, tal como está instalado en la ruta de Python. Puede usar otros cargadores para cargar desde un sistema de archivos específico u otros lugares también.

A continuación, puede cargar una plantilla:

template = env.get_template('mytemplate.html') 
print template.render(the='variables', go='here') 

Al utilizar Frasco todo está configurado para usted, por lo que sólo puede utilizar la función de Frasco render_template y ya va a buscar una subcarpeta templates de su aplicación:

from flask import render_template 

@app.route('/hello/') 
def hello(name=None): 
    return render_template('hello.html', name=name) 

Nota la variable de plantilla (también conocido como contexto) que se pasa a render_template

Jinja tiene bonita good documentation. Por favor leelo. Siéntase libre de hacer más preguntas.

1

Edición: He buscado en Google en el interweb búsqueda de una respuesta y he encontrado algunos artículos que podrían ayudar (bastante seguro de que me han ayudado)

http://dbanck.de/2009/01/13/using-jinja2-with-django/

http://www.hindsightlabs.com/blog/2010/03/15/jinja2-and-django-4ever/ (muertos)

http://djangosnippets.org/snippets/1061/

+0

Una selección de enlaces sin ninguna explicación no es útil, -1 de mí. – jwbensley

+0

@jwbensley Awww, ¿no es útil porque copiar y pegar está deshabilitado? Aquí hay una explicación: leer ...Pero también tu voto a la baja es legítimo, porque era flojo o tenía prisa (no recuerdo cuál) – StefanNch

+0

Solo pegar una carga de enlaces lleva a la podredumbre del enlace, lo que es evidente ya que ahora has marcado uno de esos enlaces como muerto. – jwbensley

Cuestiones relacionadas