2011-09-25 19 views
14

Estoy using Jinja en mi sitio y me gusta.¿Está permitido el código en línea en las plantillas de Jinja?

He encontrado una necesidad simple. ¿Cómo mostrar la fecha de hoy? ¿Hay alguna forma de insertar un código de Python en una plantilla de Jinja?

import datetime 
now = datetime.datetime.utcnow() 
print now.strftime("%Y-%m-%d %H:%M") 

This article says no, pero sugiere el uso de una macro o un filtro?

¿De verdad? ¿Debemos recurrir a todo eso? OK, ¿qué aspecto tendría en este caso?

Respuesta

11

No, no hay forma de insertar Python en Jinja. Sin embargo, puede agregar a las construcciones que conoce Jinja extendiendo el Environment del motor de plantillas o el global namespace disponible para todas las plantillas. Alternativamente, puede agregar un filtro que le permita formatear objetos de fecha y hora.

Flask almacena el entorno Jinja2 en app.jinja_env. Puede inyectar un contexto nuevo en el entorno agregando este diccionario directamente o usando el decorador @app.context_processor.

Independientemente de la ruta que elija, esto debe hacerse mientras configura la aplicación, antes de haber atendido las solicitudes. (Consulte la sección de fragmentos del sitio web para obtener información sobre cómo configurar filtros goodexamples - the docs contienen un buen ejemplo de cómo agregar elementos a las variables globales).

3

Puede agregar a global variables al que se puede acceder desde las plantillas de Jinja. Puedes poner tus propias definiciones de funciones ahí, que hacen lo que necesites.

Cuestiones relacionadas