Я не могу понять, как отправить несколько аргументов в настраиваемый фильтр шаблонов.Django - строка из переменной внутри тега шаблона
Проблема в том, что я использую переменные шаблона в качестве аргументов.
CUSTOM ШАБЛОН ФИЛЬТР
@register.filter
def is_scheduled(product_id,dayhour):
day,hour = dayhour.split(',')
return Product.objects.get(id=product_id).is_scheduled(day,hour)
NORMAL ИСПОЛЬЗОВАНИЕ
{% if product.id|is_scheduled:"7,22" %}...{% endif %}
Линия выше будет работать правильно, как я ставлю два аргумента - 7 и 22 в фильтр (проверено - работает) , Проблема в том, что я хочу поместить переменные вместо обычного текста/строки в качестве аргумента.
В моем шаблоне:
{% with day=forloop.counter|add:"-2" hour=forloop.parentloop.counter|add:"-2" %}
Теперь я хочу использовать {{ day }}
и {{ hour }}
в качестве аргументов.
Я попытался, например:
{% if product.id|is_scheduled:"{{ day }},{{ hour }}" %}...{% endif %}
Но это поднимает:
Исключение Значение: неверный буквальным для междунар() с основанием 10: {{день}} '
Есть ли у вас идеи?
К сожалению, это не работает. Я не знаю, почему. Вероятно, день и час являются целыми числами. Он возвращает: Исключительное значение: \t Объект «int» не имеет атрибута «split», и если я печатаю переменную dayhour, она печатает 0 вместо «0,2», например. –
Я обновил ответ, чтобы включить преобразование типа –
Похоже на хороший подход, но есть некоторые проблемы, возможно, с синтаксисом. u'with 'получил недопустимый токен: u'hour | stringformat: "s"' Я пытаюсь выяснить, в чем суть ошибки. –