在Django模板中访问Python fstring变量

lc8prwob  于 2023-03-11  发布在  Python
关注(0)|答案(3)|浏览(140)

我使用fstring创建了一个名为item的变量,它是其他变量的组合:

item = f'{item_id}_{flavour}_{strength}'

现在有没有办法访问这个fstring中的变量,并在django模板中显示它们。
目前我所做的就是将整个item字符串拉入模板中:

<td class="py-3">
   <p class="my-0"><strong>{{ item.product.name }}</strong></p>
   <p class="my-0"><strong>Flavour:
    </strong>{% if item.product.has_flavours %}{{ item.item|upper }}{% else %}N/A{%      endif %}
   </p>

它在html模板中呈现为:
front end display
我想访问字符串中的味道变量和字符串中的强度变量,并在模板中根据味道和强度标题显示它们。

brgchamk

brgchamk1#

你必须通过www.example.com的上下文来传递views.py

svmlkihl

svmlkihl2#

我在www.example.com中这样解决了这个问题contexts.py(如果您的上下文在www.example.com中的方法中,则工作方式相同views.py):

product = get_object_or_404(Product, pk=item_id)
            for item, quantity in item_data['items_by_variation'].items():
                flavour = item.split('_')[1]
                strength = item.split('_')[2]
                total += quantity * product.price
                product_count += quantity
                basket_items.append({
                    'item_id': item_id,
                    'quantity': quantity,
                    'product': product,
                    'flavour': flavour,
                    'strength': strength,
                })

所以对于任何寻找类似答案的人来说,你可以在字符串上使用split()函数,然后字符串的每一部分都被赋予一个索引,即[0]。

ckocjqey

ckocjqey3#

可以将物料定义为dataclass

from dataclasses import dataclass

@dataclass
class Item():
    item_id: str
    flavor: str
    strength: str

然后你可以这样使用它:

item = Item(
    item_id='item_id_value',
    flavor='flavor_value',
    strength='strength_value',
)

然后,您可以在模板中访问,如下所示:

<td class="py-3">
   <p class="my-0"><strong>{{ item.product.name }}</strong></p>
   <p class="my-0"><strong>Flavour:
    </strong>{% if item.product.has_flavours %}{{ item.itme_id }}_{{ item.flavor }}_{{ item.strength }}{% else %}N/A{%      endif %}
   </p>

相关问题