首页 > 解决方案 > 如何通过名称访问python字典中的项目

问题描述

我正在使用以下代码创建购物车

`

SESSION_COOKIE_AGE=300 
SESSION_EXPIRE_AT_BROWSER_CLOSE =True
@require_POST
def cart_add(request, product_id):
    product = get_object_or_404(Product, id=product_id)
    quantity = request.POST.get('quantity')
    product_id =str(product.id)
    request.session[product_id] ={"product_name":str(product.title),"price":str(product.price),"quantity":quantity}
    items =request.session.items()
    print(items) 
    return render(request, 'cart/display_cart.html', {"products":request.session})`

场景一 ,当我像这样=> 将项目传递给我的视图并在模板中使用没有显示return render(request, 'cart/display_cart.html', {"products":items})的情况下循环它。{% for item in products %}{{ item.product_name }} {% endfor %}但是当我打印它=> print(items) 我进入dict_items([('7', {'product_name': 'Tomatoe', 'price': '15.00', 'quantity': '3'})])我的控制台。如何打印模板中的项目

场景 2 当我像这样传递 request.session => return render(request, 'cart/display_cart.html', {"products":request.session}) 我做

 {% for key, value in products.items %}
         <li><a href="{{key}}">{{value}}</a></li>
        {% endfor %} 

在我的模板中,我得到 {'product_name': 'Tomatoe', 'price': '20.00', 'quantity': '1'}。如何使用 product_name 而不是 key 在模板中显示项目?谢谢

标签: pythondjango-templatesdjango-views

解决方案


items是一个嵌套dict

利用:

{% for k, item in products.items %}
    {{ item.product_name }}
{% endfor %}

推荐阅读