我是计算机科学的初学者,正在尝试使用python flask框架创建Web服务器。
在教程中,我在HTML中看到了以下jinja用法
{% set a = somefunction() %}
{% with a = somefunction() %}
我可以知道有什么区别吗?谢谢。
答案 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