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