首页 > 解决方案 > 如何在模板上打印出 django 中会话的所有内容

问题描述

我正在尝试在模板上打印出会话的内容。这是我的代码:

**views.py:**
def add_to_cart(request,pk,slug):
     product = get_object_or_404( Product, pk=pk,)
     product_document = {
       'title': product.title,
       'price': product.price,
       }
    request.session['cart'][str(product.id)] = product_document
    print(request.session['cart'])
    return render(request,'selling/cart.html')


def cart(request):
    template = loader.get_template("selling/cart.html")
    cart = request.session['cart']
    context ={
        'cart': cart,
    }
    return HttpResponse(template.render(context,request))

**cart.html**
{%if cart%}
 {%for items in cart%}
 <div class="holla3" id="holla3" style="background-image: url({{ product.productimage_set.first.product_images.url }});"></div>
 <div class="alltext" id="textcontainer">
   <p  id="one">{{ product.title}}</p>
   <p  id="two">${{ product.price }}</p>
   <!-- <p id="three">{{ product.product_description }}</p> -->
</div>
{% endfor %}
{% else %}
<h2>There don't seem to be any items in your cart!</h2>
{% endif%}

所以基本上我试图将 django 会话字典中的所有项目打印到模板上。

标签: djangosession

解决方案


看来你忘记了这个items部分。

{% if cart %}
   {% for items in cart %}
       <div class="holla3" id="holla3" style="background-image:url({{items.product.productimage_set.first.product_images.url }});"></div>
       <div class="alltext" id="textcontainer">
           <p id="one">{{ items.product.title }}</p>
           <p id="two">${{ items.product.price }}</p>
           <!-- <p id="three">{{ items.product.product_description }}</p> -->
       </div>
   {% endfor %}
{% endif %}

此外,您不应该将您的 views.py 命名为与您在其中命名变量相同的名称。


推荐阅读