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}
}