假设我们有这样的消息:
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
它就不再安全了。
我应该怎么做?