2011-09-23 8 views
5

私はカスタムシンプルタグを持っていました。そして、私は引数としてフィルタを使用することはできないようです。django - simple_tagへの引数にフィルタを使用する

ここは例です。 mysumがタグです。 myincreaseはフィルタです。 foobarは変数で、foobar|myincreasemysumに渡したいとします。

テンプレート:

{% mysum foobar|myincrease 1 2 %} 

はエラーを与える:

TemplateSyntaxError at/

Caught VariableDoesNotExist while rendering: Failed lookup for key [foobar|myincrease] in ... 

タグ:

@register.simple_tag 
def mysum(a, b, c): 
    return a + b + c 

フィルタ:

@register.filter 
def myincrease(num): 
    return num + 1 

私は他のアプローチを使用して私の元の問題を解決しました。しかし、私はまだこれが設計上のものか、私の間違いか、またはdjangoのバグか、見落とされているものかどうか疑問に思っています。

デコレータの実装でsimple_tagの中にcompile_filterのようなものを呼び出すと思います。

+0

あなた自身で回答が見つかりましたか?私は同じ問題に直面している^^ –

+0

申し訳ありませんが、私は今は覚えていません。私は回避策を使用して終了したと思う。 – jsz

+1

ジャンゴ特有の問題と思われます:1.3.1で再現可能で、1.4.1で動作します。 – seeg

答えて

1

それがチケットに言及しなければ表示されませんが、それはタグの位置引数へhttps://code.djangoproject.com/ticket/13956追加フィルタサポートの固定のように見えます。あなたはhttps://github.com/django/django/commit/8137027fでコミット見ることができます - 新しいparse_bits機能は、位置引数にcompile_filter()と呼ばれます。

別の回避策は{% with %}タグを使用することです。

関連する問題