-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 に答える