首页 > 解决方案 > 我的会话没有存储我要求它存储的内容,当我尝试查看会话中的内容时,会返回一个空列表

问题描述

我试图通过表单执行发布请求来向会话添加一些内容,当我尝试通过转到页面来查看会话中的内容并返回一个空列表(我看到这个 [])时,我环顾四周回答她的问题并尝试添加它request.session.modified = True,但它没有奏效,因为我认为会话可能没有保存。任何人都可以提出任何可能的解决方案吗?

意见

def cart(request):
    cartSession = request.session['cart']

    context={
        'cartSession': cartSession
    }
    return render(request, "OsbourneSpiceWebsite/cart.html", context=context)

def menu(request):
    request.session['cart'] = []

    context = {
        "items": Menu.objects.all(),
    }
    return render(request, "OsbourneSpiceWebsite/menu.html", context)

def addToCart(request):
    if request.method == 'POST':
        request.session.modified = True
        itemID = request.POST['productId']
        getItemFromPost = Menu.objects.get(itemid=itemID)

        if getItemFromPost is None:
            return HttpResponse("Error there is no data")

        cartSession = request.session['cart']

        for item in cartSession:
            if item['Itemname'] == getItemFromPost.itemname:
                item['Qty'] += 1
                break
        else:
            cartSession.append({
                'Itemname': getItemFromPost.itemname,
                'Itemprice': int(getItemFromPost.itemprice),
                'Qty': 1
            })

        request.session['cart'] = cartSession

        context = {
            "cartSession": cartSession
        }
        request.session.modified = True

        return render(request, "OsbourneSpiceWebsite/cart.html", context=context)

形式

<form action="{% url 'addToCart' %}" method="POST">
    {% csrf_token %}
    <input name="productId" type="hidden" value="{{ item.itemid }}">
    <div class="addToCartButtonContainer">
        <button aria-label="Add" class="addButton " type="submit">+</button>
    </div>
</form>

购物车页面(应在会话中显示项目的页面)

{% block body %}

<h1>CART</h1>



    <h1>{{cartSession}}</h1>


{% endblock %}

标签: pythondjangosession

解决方案


推荐阅读