このようなメッセージがあるとしましょう:
messages.add_message(request, messages.SUCCESS,
_('Document <a href="%(url)s">%(doc_type_name)s %(name)s (%(fname)s)</a> created.') % {
'doc_type_name': conditional_escape(document.doc_type.name),
'name': conditional_escape(document.title),
'fname': conditional_escape(document.name),
'url': document.get_absolute_url()
})
ここでは、メッセージを表示する場合にのみ機能します{{ message|safe }}
が、コードが含まれ%(name)
ていると実行されるため、これは望ましくありません。
私が使用する場合:
messages.add_message(request, messages.SUCCESS,
mark_safe(_('Document <a href="%(url)s">%(doc_type_name)s %(name)s (%(fname)s)</a> created.') % {
'doc_type_name': conditional_escape(document.doc_type.name),
'name': conditional_escape(document.title),
'fname': conditional_escape(document.name),
'url': document.get_absolute_url()
}))
はmark_safe
機能しません。
私はあそこの解決策を読みました:https ://stackoverflow.com/a/12600388/186202
しかし、ここで必要なのはその逆です。
_('Document %s created.') % mark_safe('')
そして、それが通過するとすぐに、ugettext function
それはもはや安全ではありません。
どうすればいいですか?