Whare是set和with in jinja之间的区别

时间:2018-11-03 14:06:37

标签: html flask jinja2

我是计算机科学的初学者,正在尝试使用python flask框架创建Web服务器。

在教程中,我在HTML中看到了以下jinja用法

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

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

我可以知道有什么区别吗?谢谢。

2 个答案:

答案 0 :(得分:2)

虽然您可以使用{% set %}来定义变量,但是{% with %}语句还会创建一个新的作用域,可以使用{% endwith %}语句结束该作用域。

例如:

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

myvar仅在相应的endwith之前可用。

您还可以使用with创建本地范围:

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

myvar仅在给定范围内可用。

您可以找到有关这些语句here的信息(此处显示的示例也来自此处)。

答案 1 :(得分:0)

{% 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