当前位置: 首页 > 知识库问答 >
问题:

django:“session store”对象没有属性“session”

商茂勋
2023-03-14

我正在尝试按照Udemy上的教程建立一个电子商务。我正在讨论如何构建购物车功能(如何添加项目,请参阅总成本和数量)的章节。

但是,我在向购物车添加产品时遇到了问题。

属性错误在 /cart/add/4/ “会话存储” 对象没有属性 “会话” 请求方法: GET
请求 URL: http://127.0.0.1:8000/cart/add/4/
Django 版本: 2.1.3
异常类型: 属性错误
异常值:
“会话存储” 对象没有属性 “会话”
异常位置: /家/ogonzales/escritorio/web_proyects/完美缓冲/购物车/视图.py_card_id,第 10 行
Python 可执行文件: /home/ogonzales/Escritorio/projects_envs/perfectcushion_env/bin/蟒蛇
版本: 3.6.7
蟒蛇路径:
[/家/奥贡扎雷斯/埃斯克里托里奥/web_proyects/完美缓冲“, ”/家/奥贡扎莱斯/埃斯克里托里奥/皮查姆/助手/皮查姆“, '/家/奥贡扎雷斯/埃斯克里托里奥/web_proyects/完美缓冲', '/usr/lib/python36.zip, ”/usr/lib/python3.6', '/usr/lib/python3.6/lib-dynload', '/home/ogonzales/escrizaros/escritorio/projects_envs/perfectcushion_env/lib/python3.6/site-packages, “/家/ogonzales/Escritorio/projects_envs/perfectcushion_env/lib/python3.6/site-packages/setuptools-39.1.0-py3.6.egg', '/家/奥贡扎莱斯/埃斯克里托里奥/projects_envs/perfectcushion_env/lib/蟒蛇3.6/site-packages/pip-10.0.1-py3.6.egg'] 服务器时间: 星期日, 2 十二月 03:17:34 0000

views.py:

from django.shortcuts import render, redirect
from shop.models import Product
from .models import Cart, CartItem
from django.core.exceptions import ObjectDoesNotExist


# Create your views here.

def _card_id(request):
    cart = request.session.session.key
    if not cart:
        cart = request.session.create()
        return cart


def add_cart(request, product_id):
    product = Product.objects.get(id = product_id)
    try:
        cart = Cart.objects.get(cart_id = _card_id(request))
    except Cart.DoesNotExist:
        cart = Cart.objects.create(
            cart_id = _card_id(request)
        )

        cart.save()
    try:
        cart_item = CartItem.objects.get(product = product, cart = cart)
        cart_item.quantity += 1
        cart_item.save()
    except CartItem.DoesNotExist:
        cart_item = CartItem.objects.create(
            product = product,
            quantity= 1,
            cart = cart,
        )
        cart_item.save()
    return redirect('cart:cart_detail')


def cart_detail(request, total = 0, counter = 0, cart_items = None):
    try:
        cart = Cart.objects.get(cart_id = _card_id(request))
        cart_items =  CartItem.objects.filter(cart = cart, active=True)

        for cart_item in cart_items:
            total += (cart_item.product.price * cart_item.quantity)
            counter += cart_item.quantity
    except ObjectDoesNotExist:
        pass

    return render(request, 'cart.html', dict(cart_items = cart_items, total = total, counter = counter))

models.py

from django.db import models
from shop.models import Product

# Create your models here.

class Cart(models.Model):
    cart_id = models.CharField(max_length=250, blank=True)
    date_added = models.DateField(auto_now_add=True)

    class Meta:
        db_table = 'Cart'
        ordering = ['date_added']

    def __str__(self):
        return self.cart_id


class CartItem(models.Model):
    product = models.ForeignKey(Product, on_delete=models.CASCADE)
    cart = models.ForeignKey(Cart, on_delete=models.CASCADE)
    quantity = models.IntegerField()
    active = models.BooleanField(default=True)
    class Meta:
        db_table = 'CartItem'

    def sub_total(self):
        return self.product.price * self.quantity

    def __str__(self):
        return self.product

追溯:

Environment:


Request Method: GET
Request URL: http://127.0.0.1:8000/cart/add/4/

Django Version: 2.1.3
Python Version: 3.6.7
Installed Applications:
['django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'shop',
 'cart']
Installed 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']



Traceback:

File "/home/ogonzales/Escritorio/projects_envs/perfectcushion_env/lib/python3.6/site-packages/django/core/handlers/exception.py" in inner
  34.             response = get_response(request)

File "/home/ogonzales/Escritorio/projects_envs/perfectcushion_env/lib/python3.6/site-packages/django/core/handlers/base.py" in _get_response
  126.                 response = self.process_exception_by_middleware(e, request)

File "/home/ogonzales/Escritorio/projects_envs/perfectcushion_env/lib/python3.6/site-packages/django/core/handlers/base.py" in _get_response
  124.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "/home/ogonzales/Escritorio/web_proyects/perfectcushion/cart/views.py" in add_cart
  19.         cart = Cart.objects.get(cart_id = _card_id(request))

File "/home/ogonzales/Escritorio/web_proyects/perfectcushion/cart/views.py" in _card_id
  10.     cart = request.session.session.key

Exception Type: AttributeError at /cart/add/4/
Exception Value: 'SessionStore' object has no attribute 'session'

共有1个答案

凤自珍
2023-03-14

而不是购物车 = 请求会话会话.key使用购物车 = request.session.session_key

 类似资料:
  • 我是Django的新手,我在如何配置此错误方面遇到了麻烦,这就是为什么我决定发布一些代码问题的原因,我希望你们能帮助我解决这个问题。我错过了代码还是做错了?请忍受我。谢谢。 错误 追踪: 追踪: 内部34.response=get_response(request)中的文件“/home/lib/python3.6/site-packages/django/core/handlers/excepti

  • 问题内容: 错误::’dict’对象没有属性’_meta’ 问题答案: 序列化器将等待普通的查询集,而不是(由返回)。如果只想查询某些字段,请使用

  • 情况 我正在修改这个YouTube系列中的GitHub项目,这是一个演示原始应用程序如何运行的演示。 密码 model.py url.py views.py forms.py navbar.html account_admin_settings.html 错误 尝试过的解决方案 我的错误不在登录处,我不确定它在哪里-属性错误:用户对象没有属性is_admin 我以前做过迁移,做过迁移-Django

  • 我正在与Django CBV合作,我第一次尝试使用表单集。我想同时填写两个表单,并将外键作为两者之间的公共元素。 我有两种型号: 我在我的表单python文件中定义了表单集: 最重要的是,我的视图是在cruds.py文件中定义的,如下所示: 该模板显示良好,具有通用的表单集,但当我想提交这个组合的表单时,我得到了这个问题: 异常值:“NoneType”对象没有属性“id” 这是回溯: 追踪: 文件

  • 这是我的密码: 这条线给了我错误 "属性错误:'浮点'对象没有属性'exp'"。X,t是Numpy ndarray。

  • 我最近将django升级到了3.2.5版本,之后管理模板没有正确加载,尤其是在模型页面中,请查看屏幕截图, 我决定参选, 但我收到以下错误 回溯(最近一次调用):File"/var/www/run_from_argv",第21行,main()File"/var/www/cmd_options",第17行,mainexecute_from_command_line(_options)File"/va