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中。