Django - 如何在format_html安全字符串中使用URL模板标记?

时间:2017-03-02 19:55:29

标签: python django templatetags

我正在尝试将URL模板标记包含在我使用format_html方法创建的字符串中:

<a href="{ url 'accounts:detail' pk=4}">profile</a>

输出到浏览器的html如下所示:

{%% url 'accounts:detail' pk={2} as profile_url %%}

基本上我没有%'s的网址标记。

我尝试输入以下内容来逃避%:

System

但我收到了相同的输出。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

您应该尝试使用 {{ profile_url|safe }}或使用{% autoescape %} Autoescappe

答案 1 :(得分:0)

您可以使用reverse()直接创建网址:

message = format_html(
        '''<div>
           <p>{0} wants to join {1}!</p>
           <p>
           View their
           <a href="{2}">profile</a>
           </p>
           <div>Approve</div>
           <div>Deny</div>
           </div>
       ''',
       self.request_user.username,
       self.lab.name,
       reverse('accounts:detail', kwargs={'pk':self.request_user.pk})
)