¿Cómo prevenir el escape automático en las plantillas de Django?

En los documentos dice:

Las únicas excepciones son las variables que ya están marcadas como “seguras” para el escape, ya sea por el código que llenó la variable o porque se han aplicado los filtros de seguridad o de escape “.

¿Cómo funciona la parte “poblada la variable”? De hecho, estoy buscando una manera de declarar que una etiqueta de plantilla es segura en la vista. De alguna manera creo que no es una buena idea dejar que un diseñador decida. Mi compañero de trabajo lo agregará siempre que ella “piense” que es una buena idea.

https://docs.djangoproject.com/en/dev/ref/templates/builtins/?from=olddocs

Django tiene una subclase de cadenas llamadas cadenas seguras (específicamente SafeUnicode o SafeString ), que se pueden crear usando django.utils.safestring.mark_safe . Cuando el motor de plantillas se encuentra con una cadena segura, no realiza ningún escape de HTML en ella:

 >>> from django.utils.safestring import mark_safe >>> from django.template import Template, Context >>> Template("{{ name }}").render(Context({'name': mark_safe('Brad')})) u"Brad" 

Si está escribiendo su propia etiqueta de plantilla, debe implementar render() que devolverá una cadena que se tratará como segura, lo que significa que usted debe manejar cualquier escape necesario. Sin embargo, si está escribiendo un filtro de plantilla, puede establecer el atributo is_safe = True en el filtro para evitar el escape automático del valor devuelto, por ejemplo

 @register.filter def myfilter(value): return value myfilter.is_safe = True 

Consulte https://docs.djangoproject.com/en/1.3/howto/custom-template-tags/#filters-and-auto-escaping para obtener más información.

Puedes llamar a django.utils.safestring.mark_safe y django.utils.safestring.mark_safe variable

 ... return direct_to_template('my-template.html', {'safe_var': mark_safe('')}) 

En la plantilla se imprimirá sin escaparse (aparecerá una alerta). Aunque el auto-escape es realmente una gran característica que te salvará de algunas cosas malas.