оставьте неопределенные переменные nunjucks без ответа

Это прекрасно работает:

nunjucks.renderString('Hello {{ username }}', { username: 'James' });

и дает мне 'Hello James'. Если я оставлю username, как показано ниже:

nunjucks.renderString('Hello {{ username }}', { noUsername: 'James' });

nunjucks дает мне 'Hello '. Поведение, которое я пытаюсь определить, - это способ позволить мне оставить неопределенные переменные незамещенными, чтобы

nunjucks.renderString('Hello {{ username }}', { noUsername: 'James' });

дает мне 'Hello {{ username }}'. Есть ли способ добиться этого с помощью настраиваемого фильтра, макроса, шаблона или чего-то более умного? Я бы хотел избежать использования собственного синтаксиса (пользовательские escape-символы) и, если возможно, сделать его более идиоматическим. Я использовал renderString для простого примера, но я собираюсь использовать его для целых шаблонов (через render).


person Joel B    schedule 09.02.2017    source источник


Ответы (1)


Оказывается, {% raw %} - это фантастический тег, уже встроенный в нунджуки, который можно использовать для обрабатывать случаи, когда вы заранее знаете, что ваша переменная будет неопределенной. Например, при использовании как такового:

nunjucks.renderString('Hello {{ username }} {% raw %}{{ iDoNotExist }}{% endraw %}',
    { username: 'James' });

он дает следующий результат:

'Hello James {{ iDoNotExist }}'
person Joel B    schedule 09.02.2017