Jinja2 устанавливает переменную строку вне цикла без пространства имен - PullRequest
0 голосов
/ 09 июля 2019

Я пытаюсь создать каскадную строку вне цикла, а затем установить ее в переменную, которую затем могу использовать вне цикла.У меня нет доступа к пространству имен. Я использую более старую версию Jinja2.

Вот что у меня есть, чтобы проиллюстрировать, что я пытаюсь сделать ...

    {% set ab_cart_string = '' %}
    {% for item in cart_object %}

    VariantID = {{ item.variant_id }}
    Item Count = {{ item.quantity }}
    {% set ab_cart_string = ab_cart_string ~ item.variant_id ~ ':' ~ item.quantity ~ ',' %}
    String = {{ ab_cart_string }}

    {% endfor %}

    Url = {{ ab_cart_string|slice(0, -1) }}

Ожидаемый результат:

Строка = 27707915206755: 1,28410722943075: 1,

URL = 27707915206755: 1,28410722943075: 1

ФактическийВыход:

String = 27707915206755: 1,28410722943075: 1,

Url =

1 Ответ

0 голосов
/ 09 июля 2019

Вместо доступа к переменным вне цикла я построил строку внутри тега, поскольку целью было создать ссылку.

Здесь я перебираю объект products и через каждый индекс я добавляю вариант.идентификатор и количество для создания вручную ссылки на корзину в Shopify с элементами, которые были добавлены пользователем в последний раз.

Затем, когда в цикле несколько элементов, я добавил условие, если нетВ последнем цикле нам нужно добавить запятую между индексами.Таким образом, я смог правильно построить ссылку на постоянные ссылки для предварительной загрузки корзины в Shopify.

<a href="https://{{ event.domain }}/cart/
{%- set products = cart_object -%} 
{%- for product in products -%} 
    {{- product.variant_id -}}:{{- product.quantity -}}
    {%- if not loop.last -%},{%- endif -%}
{%- endfor -%}  
">CART LINK HERE</a>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...