2012-03-20 5 views
5

Я пытаюсь передать шаблон в фильтр, что-то вроде этогошаблона Django передавая переменный шаблон нарезанного фильтра

{{ myVariable|cut:"something + templateVariable" }} 

Я пробовал:

{{ myVariable|cut:"something"|add:templateVariable }} 

и

{{ myVariable|cut:"something {{ templateVariable }}" }} 

но это не работает.

Это можно сделать?

ответ

8

Он должен работать с временной переменной с помощью with tag:

{% with myFilter="something"|add:templateVariable %} 
    {{ myVariable|cut:myFilter }} 
{% endwith %} 

Или в Django 1.2 и старше:

{% with "something"|add:templateVariable as myFilter %} 
    {{ myVariable|cut:myFilter }} 
{% endwith %} 

Добавить не поддерживает конкатенацию строки и Int, но вы можете легко сделать a template filter, который преобразуется в строку, например:

from django import template 

register = template.Library() 

@register.filter 
def to_unicode(mixed): 
    return unicode(mixed) 

Разрешил бы такое выражение тега шаблона some_int|to_unicode|add:'foo'.

+1

Я выяснил, что это не сработало, потому что вы не можете использовать фильтр 'add' для конкатенации строки с целочисленной переменной. Я просто создал тег шаблона клиента, чтобы справиться с этим, и использовал написанный вами код, чтобы сделать вещи проще – zentenk

Смежные вопросы