回答:
テキストでもっと複雑なことをしたい場合は、独自のフィルターを作成し、htmlを返す前に魔法をかけることができます。templatagファイルは次のようになります。
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)
次に、これをテンプレートファイルに追加できます。
<body>
...
{{ title|do_something:content }}
...
</body>
そして、これはあなたに素晴らしい結果を与えるでしょう。
を使用しautoescape
てHTMLエスケープをオフにします。
{% autoescape off %}{{ message }}{% endautoescape %}
次のようにコードでテンプレートをレンダリングできます。
from django.template import Context, Template
t = Template('This is your <span>{{ message }}</span>.')
c = Context({'message': 'Your message'})
html = t.render(c)
詳細については、Djangoのドキュメントを参照してください。
テンプレートでフィルターやタグを使用する必要はありません。format_html()を使用して変数をhtmlに変換すると、Djangoは自動的に変数のエスケープをオフにします。
format_html("<h1>Hello</h1>")
こちらをチェックしてくださいhttps://docs.djangoproject.com/en/3.0/ref/utils/#django.utils.html.format_html
€
)などの通貨記号を表示する必要がある場合は、ドルがビューから渡されます。