我正在使用 Django 开发电子商务网站。目前正在开发我第一次在 django 中使用 session 的购物车应用程序。我在设置和检索打印时为空的会话数据时遇到问题。
PS:会话中的数据将用于为用户检索购物车或更新购物车(如果购物车是作为访问者创建的)。
无法检索会话数据导致每次刷新浏览器时都会创建一个新会话。
设置.PY
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# user apps
'carts',
'products',
'search',
'tags',
# 3rd class app
'bootstrap4',
]
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
购物车APP
模型.PY
from django.conf import settings
from django.db import models
from products.models import Product
User = settings.AUTH_USER_MODEL
class CartManager(models.Manager):
def new(self, user=None):
user_obj = None
if user is not None:
if user.is_authenticated:
user_obj = user
return self.model.objects.create(user=user_obj)
class Cart(models.Model):
user = models.ForeignKey(User, null=True, blank=True, on_delete=models.DO_NOTHING)
products = models.ManyToManyField(Product, blank=True)
total = models.DecimalField(default=0.00, max_digits=100, decimal_places=2)
timestamp = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
objects = CartManager()
def __str__(self):
return str(self.id)
临摹微笑
相关分类