「メッセージ」インターフェイスを使用して、次のようにユーザーにメッセージを渡します。
request.user.message_set.create(message=message)
{{ message }}
変数にhtmlを含めて、テンプレートのマークアップをエスケープせずにレンダリングしたいと思います。
HTMLをエスケープしたくない場合は、safe
フィルターとautoescape
タグを見てください
フィルター:{{ myhtml |safe }}
http://docs.djangoproject.com/en/dev/ref/templates/builtins/#safe
TAG:{% autoescape off %}{{ myhtml }}{% endautoescape %}
http://docs.djangoproject.com/en/dev/ref/templates/builtins/#autoescape
テキストでもっと複雑なことをしたい場合は、独自のフィルターを作成し、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 docs を参照してください。
テンプレートでフィルターまたはタグを使用する必要はありません。 format_html()を使用して変数をhtmlに変換すると、Djangoは自動的に変数のエスケープをオフにします。
format_html("<h1>Hello</h1>")