新しい Django メッセージ フレームワークを介して表示されるメッセージに、HTML を少し表示しようとしています。具体的には、ModelAdmin.message_user メソッドを使用してこれを行います。これは、messages() をラップしただけの薄いメソッドです。
def message_user(self, request, message):
"""
Send a message to the user. The default implementation
posts a message using the django.contrib.messages backend.
"""
messages.info(request, message)
これまで試したものはすべて、エスケープされた HTML を表示するようです。
self.message_user(request, "<a href=\"http://www.google.com\">Here's google!</a>")
動作しません。以下も動作しません:
from django.utils.safestring import mark_safe
...
self.message_user(request, mark_safe("<a href=\"http://www.google.com\">Here's google!</a>"))
管理 base.html テンプレート内のテンプレート コードの表示は非常に簡単です。
{% if messages %}
<ul class="messagelist">{% for message in messages %}<li>{{ message }}</li>{% endfor %}</ul>
{% endif %}
だから、自分が何を間違っているのかよく分かりません。
ご意見やご指導をいただければ幸いです。ありがとうございます!
ベストアンサー1
もう一つの選択肢はextra_tags
メッセージが安全であることを示すキーワード引数。例:
messages.error(request, 'Here is a <a href="/">link</a>', extra_tags='safe')
次にテンプレートロジックを使用して安全なフィルターを使用します
{% for message in messages %}
<li class="{{ message.tags }}">
{% if 'safe' in message.tags %}{{ message|safe }}{% else %}{{ message }}{% endif %}
</li>
{% endfor %}