2011-04-10 27 views
12

我正在使用django消息,并且想要在其中放入超链接。在django消息中放入一个<a>超链接

view.py:

from django.contrib import messages 

def my_view(request): 
    messages.info(request,"My message with an <a href='/url'>hyperlink</a>") 

显然,在我的网页,我看到的HTML代码,并没有超链接。如何将消息视为一个htlml代码?

希望这是明确的。

+1

虽然这里的答案都可以正常工作,我强烈建议提供一个非常类似的问题在这里的答案:http://stackoverflow.com/a/10124845/26196 - 它提供了更多潜在的灵活性,而一些其他方法的注意事项。 – 2015-01-16 01:22:20

回答

10

Django模板中的字符串会自动转义。你不希望你的原始HTML是自动逃跑,所以您应该在字符串传递给safe过滤器:

{{ message|safe }} 

或禁用autoescape与autoescape标签:

{% autoescape off %} 
    {{ message }} 
{% endautoescape %} 
38

如果您不想关闭autoescaping上的所有消息/模板,你可以使用mark_safe该特定消息:

from django.utils.safestring import mark_safe 

messages.info(request, mark_safe("My message with an <a href='/url'>hyperlink</a>")) 

如果你也许有一些不安全的PA您的消息的rts可以使用cgi.escape来转义这些部分。

from cgi import escape 
messages.info(request, mark_safe("%s <a href='/url'>hyperlink</a>" % escape(unsafe_value))) 
+0

你必须使用SessionStorage作为消息框架才能工作 - 请参阅http://stackoverflow.com/questions/2053258/how-do-i-output-html-in-a-message-in-the -new-Django的消息的框架 – 2013-02-07 11:43:13