访问会话对象在迁移Django 1.8后检索字符串

时间:2016-02-09 21:45:34

标签: django session django-sessions

我将我的电子商务项目迁移到django 1.8,但我无法访问shopcart会话。我将用户shopcart存储为会话中的对象,然后request.session进行访问。 此对象现在被视为String,因此我无法添加/删除/ etc项或修改它。

class Cart(object):
    class Item(object):
        def __init__(self, itemid, product, image, quantity=1, price=0):
            self.image = image
            self.itemid = itemid
            self.product = product
            self.quantity = quantity
            self.price = price


        def __init__(self):
            self.items = list()
            self.unique_item_id = 0

我尝试在settings.py中添加session_serialize,但它不起作用。我认为它与这个较新的django版本有关,但这是解决它的正确方法吗?我是否应该将所有会话更改为仅存储Id(该对象应存储在DB中?)?或者写我自己的序列化器?

感谢。

我的购物车:

{{1}}

1 个答案:

答案 0 :(得分:0)

在会话中存储cart_id是一种可能性。另一种可能性是修改您get_shopping_cart类,以便反序列化会话中存储的字符串。

def get_shopping_cart(request, cart_class=Cart):
    if 'cart' in request.session:
        session = string_to_cart(request.session['cart'])
    else:
        session = cart_class()
    return session