Нанджакс nl2br не существует?

Мне нужен фильтр типа Jinja "nl2br", но в Nunjucks. В документации есть упоминание (https://mozilla.github.io/nunjucks/templating.html), но я искал его в коде nunjucks (https://github.com/mozilla/nunjucks/blob/master/src/filters.js) и не существует.

Кто-нибудь знает, как это решить с помощью эквивалентного фильтра или другого решения? Или мне нужно создать фильтр?


person Renatho De Carli Rosa    schedule 05.02.2016    source источник


Ответы (2)


Nunjucks имеет встроенный побег. Если вы установили {autoescape: true} при настройке Nunjucks, вам не нужно ничего делать. В противном случае вы можете использовать фильтр escape.

Если вы просто хотите избежать новых строк, сделайте следующее:

env.addFilter('nl2br', function(str) {
    return str.replace(/\r|\n|\r\n/g, '<br />')
})

и используйте только что созданный фильтр nl2br.

Примечание: env — это ваша среда Nunjucks.

person somebody    schedule 07.02.2016
comment
Я уже установил autoscape как true, но не работает. Только эскейп-фильтр тоже не работает. Мое решение состояло в том, чтобы создать фильтр и использовать его с таким сейфом: {{description|nl2br|safe}} - person Renatho De Carli Rosa; 10.02.2016
comment
@RenathoDeCarliRosa это плохая идея, потому что это позволит вставить любой html/скрипт в html - person Tosh; 29.12.2018

Теперь в нунджаксе есть фильтр nl2br (см. документацию)

Итак, у вас есть небезопасный текст, но вы все еще хотите, чтобы новые строки были изменены на теги <br/>, вы можете использовать следующий пример для документов

{{ "foo\nbar" | striptags(true) | escape | nl2br }}

который будет выводить

foo<br />\nbar

и отображаться как

foo
бар

person David    schedule 03.07.2019