python - 我的会话没有存储我要求它存储的内容,当我尝试查看会话中的内容时,会返回一个空列表
问题描述
我试图通过表单执行发布请求来向会话添加一些内容,当我尝试通过转到页面来查看会话中的内容并返回一个空列表(我看到这个 [])时,我环顾四周回答她的问题并尝试添加它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 %}
解决方案
推荐阅读
- android - Flatlist React 原生卡的 onPress 不会在 Android 上触发
- c++ - 如何在 C++ 中制作基本解密器?
- android - 如何向 Lottie 动画添加新角色
- go - 我如何对来自 golang 的长度为 32 [] 字节的 nonce 进行编码以访问 rust 的 jormungandr rpc 服务器?
- javascript - ScrollIntoView 哪儿也不去
- mongodb - $match 在查找阶段而不删除 mongoDB 中的本地文档
- ruby-on-rails - 在哪里为 RoR 中的 gem 定义一个类?
- android - 如何在我的 Android 应用程序上从服务器下载新贴纸?
- python - 尝试运行可执行文件时出现 Nuitka 致命 Python 错误
- c++ - 指针向量在 push_back 上抛出错误