Utilizo la interfaz de 'mensajes' para pasar mensajes al usuario como este:
request.user.message_set.create(message=message)
Me gustaría incluir html en mi {{ message }}
variable y representarlo sin escapar del marcado en la plantilla.
django
django-templates
xpanta
fuente
fuente
€
), dólar pasado de la vista, este es el camino a seguir.autoescape off
y noon
. Cometí ese error y lo descubrí solo más tarde.Si desea hacer algo más complicado con su texto, puede crear su propio filtro y hacer algo de magia antes de devolver el html. Con un archivo de etiqueta de plantilla con este aspecto:
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 le daría un buen resultado.
fuente
Puede representar una plantilla en su 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.
fuente
Utilice
autoescape
para desactivar el escape HTML:fuente
La forma más sencilla es utilizar el
safe
filtro:Consulte la documentación de Django para obtener más información sobre el filtro seguro .
fuente
No es necesario utilizar el filtro o la etiqueta en la plantilla. Simplemente use format_html () para traducir la variable a html y Django desactivará automáticamente el escape para su variable.
format_html("<h1>Hello</h1>")
Consulte aquí https://docs.djangoproject.com/en/3.0/ref/utils/#django.utils.html.format_html
fuente