Як оновити глобальну змінну зсередини оператора IF / ELSE або циклу FOR

JINJA2 має обмеження, яке запобігає зміні глобальної змінної зсередини оператора IF / ELSE циклу FOR.

Приклад сценарію (не працює):

У цьому коді ми хочемо змінити змінну маєЗнижка зсередини оператора IF / ELSE, залежно від того, чи є у користувача ваучери ваучери список атрибута користувача. На жаль, це не спрацює:

{% set hasDiscount = FALSE %}

{% if userAttribute.vouchers %}
  {% set hasDiscount = TRUE %}
{% endif %}

{{hasDiscount}} <---- still prints FALSE

Вирішення проблеми:

Додавання значень до глобальної змінної списку працює зсередини сфери тверджень IF / ELSe або FOR. Ми можемо зробити hasDiscount порожній список та додайте до нього значення за потребою. Приклад:

{% set hasDiscount = [] %}

{% if userAttribute.vouchers %}
  {% set temp = hasDiscount.append(TRUE) %}
{% endif %}

Printing all items from the hasDiscount list:
{% for item in hasDiscount %}
  {{item}}
{% endfor %}

Or just printing the first item:
{{hasDiscount[0]}}

Last updated