2012-09-09 12 views
12

Tengo un pequeño problema para entender cómo es una expresión como {{ something.render() | safe }}.Jinja 2 palabra clave segura

Por lo que he visto, sin la palabra clave safe se emite todo el documento html, no solo el contenido verdadero.

Lo que me gustaría saber, es lo que realmente hace, cómo funciona.

Respuesta

12

El filtro safe marca explícitamente una cadena como "segura", es decir, no debe escaparse automáticamente si se habilita el escapado automático.

La documentación de este filtro es here.

Consulte la sección en manual escaping para ver qué personajes califican para escapar.

15

Normalmente, el texto está escapado en HTML (por lo que <b> se escribiría como &lt;b&gt;, que se representaría como <b>).

Cuando pone |safe después de algo, le está diciendo al motor de la plantilla que ya ha escapado del texto, es decir, "es seguro hacerlo directamente". Entonces no hará esa codificación para ti.

Para más información: http://jinja.pocoo.org/docs/templates/#html-escaping

4

Para cualquiera que venga aquí en busca de utilizar el filtro de seguridad mediante programación: lo envuelve en una clase markupsafe.Markup, en el que Jinja2 depende.