variable template tag registered plantillas one not must library ifequal examples django django-templates django-template-filters

template - Django plantilla de escape



is not a registered tag library. must be one of: (4)

El escape de HTML está activado de forma predeterminada en las plantillas de Django.

Autoescape es una etiqueta. no es un filtro

{% autoescape on %} {{ post.content }} {% endautoescape %}

El filtro ''escape'' escapa el HTML de una cadena. En concreto, hace estos reemplazos:

  • <se convierte a &lt;
  • > se convierte a &gt;
  • ''(comilla simple) se convierte a &#39;
  • "(comillas dobles) se convierte a &quot;
  • & se convierte a &amp;

El ''force_escape'' es casi idéntico al ''escape'', excepto en algunos casos de esquina.

El filtro ''seguro'' marcará su contenido como seguro, por lo que no se escapará (se enviará al navegador tal como está).

¿Qué filtro debo usar para convertir automáticamente los caracteres especiales a entidades html?

Bueno, quieres decir, como convertir à a &Atilde; ? Quédate con la codificación utf-8 y olvídate de ellos.

El sistema de plantillas Django ofrece algunas opciones (filtros) para escapar de los contenidos en el html, pero son un poco confusos para mí como principiante. Digamos que estoy siguiendo un tutorial para crear un blog simple, y el contenido del blog debe ser eliminado. Confío en el contenido porque soy el único que lo edita. Entonces, la pregunta es si debo hacerlo como {{ post.content|autoescape }} , {{ post.content|escape }} , o {{ post.content|safe }} en el html?

Gracias

EDITAR: ¿Qué filtro debo usar para convertir automáticamente los caracteres especiales a entidades html?

EDIT 2: Me acabo de dar cuenta de que autoescape no es un filtro válido.


En primer lugar, debe escapar de su contenido porque nunca se sabe (incluso si es usted quien ingresa los datos) si va a necesitar caracteres especiales (como <,>,).

La sintaxis que usa muestra que se siente incómodo con el uso de escapar:

esta

{% autoescape on %} {{ content }} {% endautoescape %}

es exactamente lo mismo que esto

{{ content|escape }}

esta

{{ content }}

es exactamente lo mismo que este <- editar: si el escape automático está desactivado (gracias a Paulo Scardine)

{{ content|safe }}

Seguro es el uso de esa manera:

{% autoescape on %} {{ content }} <-- escape {{ content|safe }} <-- not escape {% endautoescape %}



Tu pregunta muestra que estás un poco confundido acerca de lo que es escapar.

Escapar es convertir los caracteres no seguros, como las etiquetas HTML, en versiones escapadas para que el contenido malicioso como las etiquetas de secuencia de comandos no arruine su sitio. Django hace esto de forma predeterminada en todo el contenido representado en una plantilla a partir de una variable.

Por su comentario, parece que usted es el único que edita su contenido, que lo que desea es representar sus variables sin que se escape automáticamente. Entonces, para eso, necesitas marcarlo como seguro. Puede hacer esto en la plantilla, envolviendo todo el lote en las {% autoescape off %}...{% endautoescape %} o mediante el {{ myvar|safe }} en variables individuales. O puede hacerlo en la vista, llamando a mark_safe(myvar) en variables individuales antes de pasarlas a la plantilla.