Остановить nunjucks от побега HTML
У меня есть вызов comments ajax, который возвращает данные опубликованного комментария, у меня также есть встроенная функциональность @mention, серверная сторона обрабатывает @mentions и делает str_replace на упомянутых пользователях, заменяя их имена тегом a в ответе, например:
{
data: {
comment: "<a href="profile/derp">Username</a> hey what's up"
}
}
Однако я не могу найти в документации, как разрешить nunjucks печатать это как фактический HTML, он экранирует его и отображает код вместо того, чтобы позволить ему быть реальным тегом.
Есть ли кто-нибудь знаете, как я могу позволить, чтобы это было напечатано как настоящий тег?
Спасибо
3 ответа:
Итак, почти сразу после того, как я опубликовал это, я нашел ответ! для тех, кто еще ищет, это просто; в вашем шаблоне, где вы печатаете свою переменную, добавьте безопасный фильтр, который отключит автоматическое экранирование.
{{ comment.content|safe }}
Хотя это означает, что он уязвим для инъекции XSS, поэтому убедитесь, что вы добавили защиту на стороне сервера.
Вы можете рассмотреть возможность передачи метаданных комментария и позволить шаблону создать HTML:
<p><a href="{{ comment.user.url }}">{{ comment.user.name }}</a> {{ comment.text }}</p>
, а затем передать метаданные следующим образом:
comment: { user: { url: "profile/derp", name: "Username" }, text: "hey what's up" }