-1

我想创建不更改应用它们的变量的原始值的过滤器。

这是一个非常简单的过滤器:

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
4

1 回答 1

-1

真的很抱歉,我不知道在python中变量是通过引用而不是按值分配的。我的例子太简单了:我实际上是在处理字典。

解决方案很简单:

def myFilter(myDict):
    returnDict = myDict.copy()
    # change returnDict ..
    return returnDict
于 2013-10-23T02:30:33.920 回答