Как проверить, находится ли цикл в среднем значении - PullRequest
0 голосов
/ 05 октября 2019

У меня проблемы с получением среднего цикла в forloop в шаблоне django.

Я пытался использовать

{% for value in key.dictionary %}
    {% if forloop.counter == widthratio value|length 2 1 %}

, но безрезультатно. На самом деле после widthratio я получаю ошибку Expected %}

Вычисление деления было взято из этого поста Есть ли фильтр для деления для Django Template?

1 Ответ

0 голосов
/ 05 октября 2019

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...