请看一看并告诉我,如果我错了/这是不好的方法,为什么。
我需要:
我的想法:
注册用户的模型有products_in_the_cart
字段。
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, ... )
最后,如果用户登录,则他当前的COOKIES['products_in_the_cart']
(如果存在)会覆盖模型的数据。如果不存在,他的模型数据会记录在COOKIES中。
views.py
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)
...