Python 如何存储用户';Django的购物车(电子商务)

Python 如何存储用户';Django的购物车(电子商务),python,django,django-models,django-views,session-cookies,Python,Django,Django Models,Django Views,Session Cookies,请看一看,告诉我我是否错了/这是一种不好的方法,以及为什么 我需要: 匿名用户可以将产品添加到购物车 即使在关闭浏览器后,匿名用户也可以使用同一台计算机访问他的购物车 注册用户也可以这样做+如果他使用另一台计算机登录,他仍然可以访问他的购物车,这是以前制作的 我的想法: 注册用户的型号在购物车字段中有产品 models.py from django.contrib.auth import User class MyUser(User): products_in_the_cart = m

请看一看,告诉我我是否错了/这是一种不好的方法,以及为什么

我需要:

  • 匿名用户可以将产品添加到购物车
  • 即使在关闭浏览器后,匿名用户也可以使用同一台计算机访问他的购物车
  • 注册用户也可以这样做+如果他使用另一台计算机登录,他仍然可以访问他的购物车,这是以前制作的
  • 我的想法:

    注册用户的型号在购物车字段中有
    产品

    models.py

    from django.contrib.auth import User
    
    class MyUser(User):
        products_in_the_cart = models.Charfield(max_length=200)
    
    添加到购物车中的产品存储在Cookie中。如果用户经过身份验证,它还存储在用户模型中

    views.py

    def add_product_to_the_cart(request, product_id):  
        ...      
        request.COOKIES['products_in_the_cart'].append(product_id)
        if request.user.is_authenticated():
            request.user.products_in_the_cart = json.dumps(request.COOKIES['products_in_the_cart'])
        return render(request, ... )
    
    def user_login(request):
        ...
        login(request, user)
        if request.COOKIES.get('products_in_the_cart', False):
            user.products_in_the_cart = json.dumps(request.COOKIES['products_in_the_cart'])
        elif user.products_in_the_cart:
            request.COOKIES['products_in_the_cart'] = json.loads(user.products_in_the_cart)
        ...
    
    最后,如果用户登录,其当前的
    COOKIES['products\u in\u the\u cart']
    (如果存在)将覆盖模型的数据。如果不存在,他的模型数据会记录在cookie中

    views.py

    def add_product_to_the_cart(request, product_id):  
        ...      
        request.COOKIES['products_in_the_cart'].append(product_id)
        if request.user.is_authenticated():
            request.user.products_in_the_cart = json.dumps(request.COOKIES['products_in_the_cart'])
        return render(request, ... )
    
    def user_login(request):
        ...
        login(request, user)
        if request.COOKIES.get('products_in_the_cart', False):
            user.products_in_the_cart = json.dumps(request.COOKIES['products_in_the_cart'])
        elif user.products_in_the_cart:
            request.COOKIES['products_in_the_cart'] = json.loads(user.products_in_the_cart)
        ...
    

    不要那样使用饼干。使用会话框架,该框架将数据存储在数据库中,并将密钥存储在cookie中。不要这样使用cookie。使用会话框架,该框架将数据存储在数据库中,并将密钥存储在cookie中。