Django - Как использовать тег шаблона URL в безопасной строке format_html?

Я пытаюсь включить тег шаблона URL в строку, созданную мной с помощью метода format_html:

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

HTML, который выводится в браузер, выглядит следующим образом:

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

В основном мой URL-тег без%.

Я попытался избежать%, набрав:

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

Но я получаю такой же вывод.

Есть идеи?

2 ответа

Решение

Вы можете напрямую создать URL с 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})
)

Вы, вероятно, должны попробовать использовать{{ profile_url|safe }} или использовать {% autoescape %} Autoescappe

Другие вопросы по тегам