В чем разница между множеством и дзиндзя - PullRequest
0 голосов
/ 03 ноября 2018

Я новичок в области компьютерных наук и пытаюсь использовать каркас Python для создания веб-сервера.

В руководствах я видел приведенное ниже использование дзиндзя в HTML, которое

  1. {% set a = somefunction() %}

  2. {% with a = somefunction() %}

Могу ли я знать, в чем различия? Спасибо.

Ответы [ 2 ]

0 голосов
/ 03 ноября 2018

Переменные внутри оператора {% with %} ограничены этим конкретным оператором, в то время как переменные, созданные с помощью {% set %}, доступны из любого места в шаблоне (они являются глобальными).

>>> import jinja2
>>> t = jinja2.Template("{% set a = 'Global' %}{% with a = 'Local' %}{{ 'First a is ' + a +'\n' }}{% endwith %}{{ 'Second a is ' + a }}")
>>> print(t.render())
First a is Local  
Second a is Global
0 голосов
/ 03 ноября 2018

Хотя вы можете использовать {% set %} для определения переменной, оператор {% with %} дополнительно создает новую область действия, которую можно завершить с помощью оператора {% endwith %}.

Например:

{% with myvar=1 %}
    ...
{% endwith %}

myvar будет доступно только до соответствующего endwith.

Вы также можете использовать with для создания локальной области:

{% with %}
    {% set myvar=1 %}
    ...
{% endwith %}

myvar будет доступно только в пределах указанного объема.

Вы можете найти информацию об этих утверждениях здесь (примеры, показанные здесь, были также взяты оттуда).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...