Django 设置和检索会话数据

我正在使用 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)


温温酱
浏览 156回答 1
1回答

临摹微笑

我认为您的问题可能是这一行中的错字:request.session['card_id']  = cart_obj.id如果您仔细观察,您正在设置 acard_id但稍后尝试获取cart_id.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python