Jinja es un motor de plantillas web para el lenguaje de programación Python . Fue creado por Armin Ronacher y tiene una licencia BSD . Jinja es similar al motor de plantillas de Django , pero proporciona expresiones similares a las de Python al tiempo que garantiza que las plantillas se evalúen en una caja de arena . Es un lenguaje de plantilla basado en texto y, por lo tanto, se puede utilizar para generar cualquier marcado y código fuente.
Autor (es) original (es) | Armin Ronacher |
---|---|
Versión inicial | 17 de julio de 2008 [1] |
Lanzamiento estable | 3.0.1 [2] / 18 de mayo de 2021 |
Repositorio | |
Escrito en | Pitón |
Tipo | Motor de plantillas |
Licencia | Licencia BSD |
Sitio web | palletsprojects |
El motor de plantillas de Jinja permite la personalización de etiquetas, [3] filtros, pruebas y globales. [4] Además, a diferencia del motor de plantillas de Django, Jinja permite al diseñador de plantillas llamar a funciones con argumentos sobre objetos. Jinja es el motor de plantillas predeterminado de Flask [5] y también lo utilizan Ansible [6] y Trac .
Características
Algunas de las características de Jinja son: [7]
- ejecución en espacio aislado
- escape HTML automático para evitar ataques de secuencias de comandos entre sitios (XSS)
- herencia de plantilla
- compila hasta el código Python óptimo justo a tiempo
- compilación opcional de plantillas anticipadas
- fácil de depurar (por ejemplo, los números de línea de las excepciones apuntan directamente a la línea correcta en la plantilla)
- sintaxis configurable
Jinja, como Smarty , también se envía con un sistema de filtro fácil de usar similar al pipeline de Unix .
Ejemplo
A continuación, se muestra un pequeño ejemplo de un archivo de plantilla example.html.jinja
: [8]
< html > < encabezado > < título > {{ variable | escape }} title > head > < body > {% - para el elemento en item_list %} {{ item }} {% if not loop .last %} , {% endif %} {% - endfor %} < / cuerpo > html >
y código de plantilla:
from jinja2 import Template with open ( 'example.html.jinja' ) as f : tmpl = Template ( f . read ()) print ( tmpl . render ( variable = 'Value with data' , item_list = [ 1 , 2 , 3 , 4 , 5 , 6 ] ))
Esto produce la cadena HTML:
< html > < head > < title > Valor con & lt; inseguro & gt; datos título > encabezado > < cuerpo > 1, 2, 3, 4, 5, 6 cuerpo > html >
Fuentes
- ^ "Historial de versiones de Jinja2" . Consultado el 24 de junio de 2020 .
- ^ "Versión 3.0.1" . 18 de mayo de 2021 . Consultado el 21 de mayo de 2021 .
- ^ "Extensiones" . Documentación de Jinja2 (2.8-dev) . Consultado el 26 de mayo de 2015 .
- ^ "Extensiones" . Documentación de Jinja2 (2.8-dev) . Consultado el 26 de mayo de 2015 .
- ^ DuPlain, R. (2013). Desarrollo Web Instant Flask . Packt Publishing. pag. 30. ISBN 978-1-78216-963-5. Consultado el 26 de mayo de 2015 .
- ^ https://docs.ansible.com/ansible/latest/user_guide/playbooks_templating.html
- ^ "Bienvenido | Jinja2 (El motor de plantillas de Python)" . palletsprojects.com/p/jinja .
- ^ Ronacher, Armin. "Documentación del diseñador de plantillas" . Documentación de Jinja2 . Consultado el 7 de enero de 2016 .
Una plantilla Jinja no necesita tener una extensión específica: .html, .xml o cualquier otra extensión está bien.
enlaces externos
- Sitio web de Jinja
- Jinja2 en Python pypi
- jinja2 en GitHub