Python Jinja2-复制变量而不是引用它
我希望能够在Jinja2 2.10中复制一个变量,而不是仅仅引用它,但找不到一种方法 请参见以下示例: 来自jinja2导入环境 从jinja2.ext导入do env=Environmentextensions=[do] template=env.from_string' {%-set base={elems:{a:aa}}-%} {%-set data={elems:base.elems}-%} {%-do data.elems.update{a:bb}-%} {{base.elems.a}}-aa应为空 {{data.elems.a}}-bb应为 ' template.render 结果是:“bb-aa预期\nbb-bb预期” 这意味着data.elems不是base.elems的副本,而是对它的引用。 我需要一份data.elems中base.elems的副本 我试过: 基地,获取“元素” 基本|属性'elems' 但这些都不起作用。有没有办法复制Jinja2中的值Python Jinja2-复制变量而不是引用它,python,jinja2,Python,Jinja2,我希望能够在Jinja2 2.10中复制一个变量,而不是仅仅引用它,但找不到一种方法 请参见以下示例: 来自jinja2导入环境 从jinja2.ext导入do env=Environmentextensions=[do] template=env.from_string' {%-set base={elems:{a:aa}}-%} {%-set data={elems:base.elems}-%} {%-do data.elems.update{a:bb}-%} {{base.elems.a}
$ python q54718238.py
aa - "aa" expected
bb - "bb" expected
诀窍在于知道Python的许多数据类型都是通过引用实现的。因此,在对象上调用copy可以修复它。注意,我将{%-set data={elems:base.elems}-%}更改为{%-set data={elems:base.elems.copy}-%}
来自jinja2导入环境
从jinja2.ext导入do
env=Environmentextensions=[do]
template=env.from_string'
{%-set base={elems:{a:aa}}-%}
{%-set data={elems:base.elems.copy}-%}
{%-do data.elems.update{a:bb}-%}
{{base.elems.a}}-aa应为空
{{data.elems.a}}-bb应为
'
printtemplate.render
好极了我不知道我能用。在金甲2号物体上复制。