2010-07-08 15 views
86

Estoy creando un administrador para Flask y SQLAlchemy, y quiero pasar el HTML para las diferentes entradas a mi vista usando render_template. El marco de plantillas parece escapar el HTML de forma automática, por lo que todo < "'> se convierten en entidades HTML. ¿Cómo puedo desactivar que para que el HTML procesa de forma correcta?Pasar HTML a la plantilla usando Flask/Jinja2

Respuesta

177

la forma ideal es

{{ something|safe }} 

. de girar completamente fuera de escape de automóviles

+0

hi @Armin Ronacher, ¿podría por favor explicar más y dar un ejemplo? Gracias. – Samoth

+0

Quiero decir, por ejemplo, tengo un archivo llamado 'userHome.html', y me gustaría usar' return render_template ('userHome.html') ', pero no se procesa correctamente y todos se convierten en ** entidades html ** en mi consola de Chrome – Samoth

+0

En la etiqueta 'trans' esto tiene que ser usado como' {% trans something = something | safe%} A {{something}} B {% endtrans%} ' – Kangur

70

también declarareis HTML a salvo del código:

from flask import Markup 
value = Markup('<strong>The HTML String</strong>') 

pasan luego que Valu e a las plantillas y no tienen que |safe.

+0

¿existe el marcado en jinja2? – iamgopal

+3

Markup es una clase Jinja2, sí. Implementa una interfaz común soportada por muchas bibliotecas de Python (desafortunadamente no Django). También puede utilizar el paquete markup safe que implementa el mismo objeto: http://pypi.python.org/pypi/MarkupSafe –

+0

Este es el mejor método para escribir filtros personalizados, cuando el filtro tiene que pasar algo de marcado a la plantilla. – erjiang

7

En la sección documentos Jinja HTML Escaping:

Al escapar automática está habilitada todo se escaparon por defecto excepto para los valores marcados explícitamente como seguro. Esos pueden ser marcados por la aplicación o en la plantilla usando el filtro | safe .

Ejemplo:

<div class="info"> 
    {{data.email_content|safe}} 
</div> 
+1

http://jinja.pocoo.org/docs/dev/templates/#html-escaping – Akairis

Cuestiones relacionadas