widthratio
- это не фильтр, это тег . Но вы можете присвоить результат widthratio
переменной, используя as
:
{% widthratio key.dictionary|length 2 1 as midpoint %}
{% for key, value in key.dictionary.items %}
{% if forloop.counter == midpoint|add:"0" %}
widthratio
создает строку, поэтому для проверки на равенство целому числу forloop.counter
мы имеемдля преобразования midpoint
обратно в целое число, используя фильтр add
в качестве обходного пути .
Обратите внимание, что мы берем длину словаря , не одного ключа. Я также решил зациклить элементы словаря (ключ и значение) в приведенном выше примере.
Демо:
>>> from django.template import Context, Template
>>> t = Template("""\
... {% widthratio foo|length 2 1 as midpoint %}
... {% for key, value in foo.items %}
... {% if forloop.counter = midpoint|add:"0" %}Half-way through!{% endif %}
... {{ forloop.counter }}: {{ key }} == {{ value }}
... {% endfor %}
... """)
>>> context = Context({"foo": {"spam": 42, "vikings": 17, "eggs": 81}})
>>> print(t.render(context))
1: spam == 42
Half-way through!
2: vikings == 17
3: eggs == 81