Flask - доступ к данным jinja2 из отфильтрованного результата - PullRequest
0 голосов
/ 01 марта 2020

данные:

[
            {
                "name": "fixed",
                "addr": "172.16.1.100",
                "active": "Yes"
            },
            {
                "name": "floating",
                "addr": "10.90.80.10",
                "active": "No"
            }
        ]

Я пытаюсь отфильтровать эти данные в шаблоне jinja2 и значение из отфильтрованного результата.

{{ data|selectattr("name", "equalto", "floating")}}

это дает мне

{
                "name": "floating",
                "addr": "10.90.80.10",
                "active": "No"
            }

Я бы хотел получить активный статус из этого результата. Я попытался {{ data|selectattr("name", "equalto", "floating")|attr("active")}}, и он возвращается пустым.

Как правильно это сделать? получить доступ к атрибуту после применения фильтра jinja "|"

Примечание: я только что попробовал ниже, и это работает. Проблема в том, когда я применяю фильтр, а затем пытаюсь получить доступ к атрибуту. используя метод attr.

This works
{{ data[0]['active'] }}

This doesnt 
{{ data|first|attr('active') }}

1 Ответ

0 голосов
/ 01 марта 2020

попробуйте это, если вы тоже хотите отфильтровать активный статус

{{ data|selectattr("name", "equalto", "floating")|selectattr("active", "equalto", "No")|list }}

Вот что я уловил из вашего вопроса, я не знал, что вы действительно хотите с "активным" фильтром.

Отредактировано:

, если вы просто хотите получить значение из активного, просто сделайте это:

{{ (data|selectattr("name", "equalto", "floating")|list)[0]["active"] }}
...