loops - Jinja2在没有命名空间的循环外设置变量字符串
问题描述
我正在尝试从循环中创建一个连接字符串,然后将其设置为一个变量,然后我可以在循环外使用。我无权访问命名空间我使用的是旧版本的 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,
网址 = 27707915206755:1,28410722943075:1
实际输出:
字符串 = 27707915206755:1,28410722943075:1,
网址 =
解决方案
我没有在循环外访问变量,而是在标签内构建了字符串,因为目标是构建链接。
在这里,我循环遍历 products 对象,并通过每个索引添加一个 variant.id 和一个数量,以便在 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>
推荐阅读
- blender - 使用 Blender 组合具有不同排序规则的对象
- xcode - Rstudio 无法在控制台显示运行结果
- angular - FormBuilder 对象转换为对象
- c# - .NET Core 3.0 WebApi (JsonSerialize) 不序列化嵌套对象/所有对象信息
- java - Java 新手:类已构造但返回 Null
- python-3.x - Jupyter notebook:500:不允许代理
- java - 如何显示用户插入的指数函数的展开形式?
- django - django rest框架动态url路由
- html - 对 html 标签中的每个元素应用效果,除了一个元素(ID/类)
- git - 在 master 上的先前版本上提交更改