2013-10-14 3 views
5

Ich habe einige Filter definiert und benutze sie sehr oft. Ich muss einige A/B-Tests durchführen und in einigen Situationen sollten einige Filter auf andere Weise funktionieren.Wie verwende ich die Variable, um den Filternamen in jinja2 templates zu übergeben

Der einfachste Weg dies zu tun wäre, eine Variable in der Vorlage zu erstellen, die einen Filternamen speichert. so etwas wie dieses:

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

Aber wenn ich das versuche, bekomme ich eine Fehlermeldung:

TemplateAssertionError: no filter named 'filter_name'

Bitte helfen Sie mir, eine Lösung zu finden.

Antwort

4

Wenn Sie {% set filter_name = 'some_name' %} tun, müssen Sie eine String-Variable namens "filter_name" erstellen. Sie sollten einen Filter erstellen, der ein weiteres Argument annimmt, auf dessen Grundlage er entscheidet, was zu tun ist.

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


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