template safe length django django-templates

django - safe - Renderizar una variable de plantilla como HTML



django template tags (6)

Uso la interfaz de ''mensajes'' para pasar mensajes al usuario de esta manera:

request.user.message_set.create(message=message)

Me gustaría incluir html en mi variable {{ message }} y renderizarlo sin escapar del marcado en la plantilla.



No es necesario usar el filtro o la etiqueta en la plantilla. Simplemente use format_html () para traducir variable a html y Django automáticamente desactivará el escape para su variable.

format_html("<h1>Hello</h1>")

Consulte aquí https://docs.djangoproject.com/en/1.9/ref/utils/


Puedes renderizar una plantilla en tu código así:

from django.template import Context, Template t = Template(''This is your <span>{{ message }}</span>.'') c = Context({''message'': ''Your message''}) html = t.render(c)

Consulte los documentos de Django para obtener más información.



Si quieres hacer algo más complicado con tu texto, puedes crear tu propio filtro y hacer algo de magia antes de devolver el html. Con un archivo templatag como este:

from django import template from django.utils.safestring import mark_safe register = template.Library() @register.filter def do_something(title, content): something = ''<h1>%s</h1><p>%s</p>'' % (title, content) return mark_safe(something)

Entonces podrías agregar esto en tu archivo de plantilla

<body> ... {{ title|do_something:content }} ... </body>

Y esto te daría un buen resultado.


Use el autoescape para desactivar el escapado de HTML:

{% autoescape off %}{{ message }}{% endautoescape %}