Python 添加到会话字典
我试图创建一个视图函数,在添加和删除时更新用户购物车(会话)Python 添加到会话字典,python,django,Python,Django,我试图创建一个视图函数,在添加和删除时更新用户购物车(会话) def shoppingCartAdd(request): data = json.loads(request.POST['post_data']) if 'shopping_cart' not in request.session: #<-- create the session dict request.session['shopping_cart'] = {} if data["
def shoppingCartAdd(request):
data = json.loads(request.POST['post_data'])
if 'shopping_cart' not in request.session: #<-- create the session dict
request.session['shopping_cart'] = {}
if data["action"] == "add":
with open(MEDIA_ROOT + '/json/products.js', 'r') as json_file:
products = json.loads(json_file.read()) #<-- json file that contains product information
json_file.close()
item = products["products"][data["id"]] #<-- get the item info from json
#If the item is not in the session add it. Otherwise do something.
if data["id"] not in request.session['shopping_cart']:
request.session['shopping_cart'][data["id"]] = item
else:
print('Exists')
#Do something else.
#Remove the item from the dict.
if data["action"] == "remove":
request.session['shopping_cart'].pop([data["id"]], None)
context = {'shoppingCart' : request.session['shopping_cart']}
return JsonResponse(context)
根据文件—— 默认情况下,Django仅在会话被修改时保存到会话数据库中–也就是说,如果它的任何字典值已被分配或删除
您可以将SESSION\u SAVE\u EVERY\u REQUEST设置设置为True,这将强制在每次请求时保存会话。根据文档- 默认情况下,Django仅在会话被修改时保存到会话数据库中–也就是说,如果它的任何字典值已被分配或删除
您可以将SESSION\u SAVE\u EVERY\u REQUEST设置设置为True,这将强制在每次请求时保存会话。首先:
json\u file.close()
与您使用的上下文管理器(又称with语句)是冗余的。我希望它(我没有测试)最终会抛出一个异常,并且不会执行下面的代码。我的建议是,您添加日志点/打印输出,这些日志点/打印输出遵循每条语句之间的代码流,遵循变量的变化方式,并检查出错的方式和位置。@zmo我尝试过对其进行调试。但并没有从中得到任何结果。从我的浏览器控制台上,我可以看到它也只会打印出2个条目。你检查过了吗?@zmo我没有。谢谢你的链接!首先:json\u file.close()
与您使用的上下文管理器(又称with语句)是冗余的。我希望它(我没有测试)最终会抛出一个异常,并且不会执行下面的代码。我的建议是,您添加日志点/打印输出,这些日志点/打印输出遵循每条语句之间的代码流,遵循变量的变化方式,并检查出错的方式和位置。@zmo我尝试过对其进行调试。但并没有从中得到任何结果。从我的浏览器控制台上,我可以看到它也只会打印出2个条目。你检查过了吗?@zmo我没有。谢谢你的链接!
{
'38': {'name': 'hergh', 'price': 23, 'active': 'active', 'pk': 38, 'imageURL': '/media/gg_faUCQOg.jpg', 'type': 'sokker', 'amount': 13},
'39': {'name': 'dea', 'price': 1, 'active': 'active', 'pk': 39, 'imageURL': '/media/gg_6ECtbKE.jpg', 'type': 'sokker', 'amount': 1}
}