Antworten:
Wenn Sie nicht möchten, dass der HTML-Code maskiert wird, sehen Sie sich den safe
Filter und das autoescape
Tag an:
safe
::
{{ myhtml |safe }}
{% autoescape off %}
{{ myhtml }}
{% endautoescape %}
autoescape off
und nicht on
. Ich habe diesen Fehler gemacht und ihn erst später entdeckt.
Wenn Sie etwas Komplizierteres mit Ihrem Text machen möchten, können Sie Ihren eigenen Filter erstellen und etwas Magie anwenden, bevor Sie den HTML-Code zurückgeben. Mit einer Templatag-Datei, die so aussieht:
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)
Dann können Sie dies in Ihre Vorlagendatei einfügen
<body>
...
{{ title|do_something:content }}
...
</body>
Und das würde Ihnen ein schönes Ergebnis bringen.
Verwenden Sie die autoescape
, um HTML-Escape zu deaktivieren:
{% autoescape off %}{{ message }}{% endautoescape %}
Sie können eine Vorlage in Ihrem Code folgendermaßen rendern:
from django.template import Context, Template
t = Template('This is your <span>{{ message }}</span>.')
c = Context({'message': 'Your message'})
html = t.render(c)
Weitere Informationen finden Sie in den Django-Dokumenten .
Der einfachste Weg ist die Verwendung des safe
Filters:
{{ message|safe }}
Weitere Informationen finden Sie in der Django-Dokumentation zum sicheren Filter .
Der Filter oder das Tag müssen nicht in der Vorlage verwendet werden. Verwenden Sie einfach format_html (), um die Variable in HTML zu übersetzen, und Django deaktiviert automatisch das Escape für Ihre Variable.
format_html("<h1>Hello</h1>")
Überprüfen Sie hier https://docs.djangoproject.com/de/3.0/ref/utils/#django.utils.html.format_html
€
) anzeigen müssen, ist dies der richtige Weg.