проверить None в массиве в flask (шаблон jinja) - PullRequest
1 голос
/ 09 января 2020

У меня странная ситуация, когда массив имеет значение None:

'synonyms': [None]

Формат данных json в пн go такой:

{
    "_id": {
        "$oid": "5e0983a63bcf0dab51f32a9d"
    },
    "word": "vulgarizer",
    "wordset_id": "c0c349060a",
    "labels": [{
        "name": "American",
        "is_dialect": true
    }],
    "meanings": [{
        "id": "3cb39b55e5",
        "def": "someone who makes attractive to the general public",
        "speech_part": "noun",
        "synonyms": ["populariser"]
    }, {
        "id": "865bfdea0b",
        "def": "someone who makes something vulgar",
        "speech_part": "noun",
        "synonyms": [null]
    }],
    "editors": ["lefurjah"],
    "contributors": ["luxfactaest", "msingle", "bryanedu"]
}

Но когда я попытался напечатать то же самое в python, оно показало:

'meanings': [{
    'id': '3cb39b55e5',
    'def': 'someone who makes attractive to the general public',
    'speech_part': 'noun',
    'synonyms': ['populariser']
}, {
    'id': '865bfdea0b',
    'def': 'someone who makes something vulgar',
    'speech_part': 'noun',
    'synonyms': [None]
}]

Как проверить это значение в if условии:

Я пытался как:

{% if meaning['synonyms'] is defined and meaning['synonyms']|length > 0 %}
    do something-- if condition matches

Но None в массиве не ссылается на нулевое значение?

Есть ли возможное решение? ТИА

1 Ответ

1 голос
/ 10 января 2020

Вы можете использовать in условие внутри jinja (как в Python).

from jinja2 import Template

data = {"synonyms": [None], "synonyms2": ['ok']}
tm = Template(
    "None in synonyms: {{ None in data['synonyms'] }}\n"
    "None in synonyms2: {{ None in data['synonyms2'] }}\n"
    "{% if None in data['synonyms'] %}None in synonyms {% endif %}\n"
    "{% if None in data['synonyms2'] %}None in synonyms2 {% endif %}\n"
)
msg = tm.render(data=data)
print(msg)

Результат:

None in synonyms: True
None in synonyms2: False
None in synonyms 

Надеюсь, что это помогает.

...