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.
Respuestas:
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.
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.
Utilice autoescape
para desactivar el escape HTML:
{% autoescape off %}{{ message }}{% endautoescape %}
La forma más sencilla es utilizar el safe
filtro:
{{ message|safe }}
Consulte la documentación de Django para obtener más información sobre el filtro seguro .
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
€
), dólar pasado de la vista, este es el camino a seguir.