我想创建不会更改应用它们的变量原始值的过滤器。
这是一个非常简单的过滤器:
def increment(mynumber):
return mynumber + 1
JINJA_ENVIRONMENT.filters['increment'] = increment
如果在模板中我有类似的东西:
{% set anumber = 10 %}
<span>first: {{ anumber|increment }}</span>
<span>second: {{ anumber|increment }}</span>
我希望看到显示:
first: 11
second: 11
而我得到了:
first: 11
second: 12
如何实现第一类结果? 我也可以这样做,以便链式过滤器将传递新值吗? 例如:
<span>first: {{ anumber|increment|increment|increment }}</span>
<span>second: {{ anumber|increment }}</span>
将输出
first: 13
second: 11
答案 0 :(得分:-1)
我真的很抱歉,我不知道python变量是通过引用而不是按值分配的。我的例子太简单了:我实际上是在处理字典。
解决方案很简单:
def myFilter(myDict):
returnDict = myDict.copy()
# change returnDict ..
return returnDict