Estoy siguiendo un tutorial de Flask donde está usando "|seguro" en la plantilla jinja2. ¿Por qué necesitamos este símbolo de tubería y seguro?
sin usar seguro, imprime todas las etiquetas html.
Usando | safe , muestra el formato adecuado. ¿Por qué funciona de esta manera?
A continuación se muestra el código jinja2:
{% extends "layout.html" %} {% block body %} <h1>{{article.title}}</h1> <small>Written by {{article.author}} on {{article.create_date}}</small> <hr> <div> {{article.body | safe}} </div> {% endblock %}Con | safe Jinja2 imprimirá los símbolos tal como están en su variable, lo que significa que no traducirá los símbolos "peligrosos" en entidades html (que Jinja2 hace de forma predeterminada para escapar de los "peligrosos"). Use esta opción si confía en el contenido de la variable porque, en caso contrario, puede haber vulnerabilidades, por ejemplo, XSS .
De los DOCUMENTOS :
Al generar HTML a partir de plantillas, siempre existe el riesgo de que una variable incluya caracteres que afecten el HTML resultante. Hay dos enfoques:
- escapando manualmente cada variable; o
- escapando automáticamente de todo por defecto.
Jinja apoya a ambos.
En el modo de escape automático de todo por defecto , para marcar el contenido como seguro y, por lo tanto, no es necesario escapar, use el filtro:
| safe