2013-10-14 27 views
5

için filtre adının geçer geçişi nasıl kullanılır? Bazı filtreler tanımladım ve sık sık kullanıyorum. Bazı A/B testleri yapmam gerekiyor ve bunun için bazı durumlarda filtrelerin farklı şekilde çalışması gerekiyor.jinja2 şablonları

Bunu yapmanın en kolay yolu, bir filtre adını depolayan şablonda bir değişken oluşturabilir. Böyle bir şey:

{% set filter_name = 'some_name' %} 
{{ my_value|filter_name }} 

Ama bu çalıştığınızda bir hata alıyorum:

TemplateAssertionError: no filter named 'filter_name'

bir çözüm bulmak için bana yardım edin.

cevap

4

{% set filter_name = 'some_name' %} yapıyorsanız, "filter_name" adında bir dize değişkeni oluşturdunuz. Ne yapacağına karar verdiği bir argümanı daha içeren bir filtre oluşturmalısınız.

{% set filter_name = 'some_name' %} 
{{ my_value|myfilter(filter_name) }} 


def myfilter(value, filtername): 
    if(filtername is 'twice') 
     return value*2 
    else 
     .....