Odpowiedzi:
Jeśli chcesz zrobić coś bardziej skomplikowanego z tekstem, możesz utworzyć własny filtr i trochę magii przed zwróceniem html. Z plikiem szablonu wyglądającym tak:
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)
Następnie możesz dodać to do pliku szablonu
<body>
...
{{ title|do_something:content }}
...
</body>
A to dałoby dobry wynik.
Możesz renderować szablon w kodzie w następujący sposób:
from django.template import Context, Template
t = Template('This is your <span>{{ message }}</span>.')
c = Context({'message': 'Your message'})
html = t.render(c)
Więcej informacji można znaleźć w dokumentacji Django .
Użyj, autoescape
aby wyłączyć ucieczkę HTML:
{% autoescape off %}{{ message }}{% endautoescape %}
Najprostszym sposobem jest użycie safe
filtra:
{{ message|safe }}
Aby uzyskać więcej informacji, zapoznaj się z dokumentacją Django dotyczącą bezpiecznego filtra .
Nie trzeba używać filtra ani tagu w szablonie. Wystarczy użyć format_html (), aby przetłumaczyć zmienną na HTML, a Django automatycznie wyłączy dla ciebie zmienną.
format_html("<h1>Hello</h1>")
Sprawdź tutaj https://docs.djangoproject.com/en/3.0/ref/utils/#django.utils.html.format_html
€
), dolara przeszedł z widoku, to jest właściwy sposób.