访问全局词典

2024-04-26 12:57:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我不认为有太多的解释,问题是直截了当的。我听到一个错误说 编辑:我在底部添加了完整的错误回溯

错误:

"if i in items:
NameError: name 'items' is not defined"

代码:

class Cart:
items = {}
def addToCart(item):
    global items
    for i in item:
        if i in items:
            items[i] += item[i]
        else:
            items.update(item)
            
def removeFromCart(item):
    global items
    for i in item:
        if i in items and items[i] > 1:
            items[i] -= 1
        elif i in items and items[i] <= 1:
            items.pop(i, None)

函数的调用方式:

...
from .cart import Cart
...
@action(detail=True, methods=["POST"])
def addToCart(self, request, pk=None):
    item = request.data['item']
    Cart.addToCart(item)
    response = Cart.items
    return Response(response, status = status.HTTP_200_OK)

内部服务器错误:/api/Orders/1/addToCart/ 回溯(最近一次呼叫最后一次): 文件“/home/bigmac/anaconda3/lib/python3.7/site packages/django/core/handlers/exception.py”,第34行,在内部 响应=获取响应(请求) 文件“/home/bigmac/anaconda3/lib/python3.7/site packages/django/core/handlers/base.py”,第115行,在“获取”响应中 response=self.process\u异常\u由\u中间件(e,请求) 文件“/home/bigmac/anaconda3/lib/python3.7/site packages/django/core/handlers/base.py”,第113行,在“获取”响应中 响应=包装的回调(请求,*回调参数,**回调参数) 文件“/home/bigmac/anaconda3/lib/python3.7/site packages/django/views/decorators/csrf.py”,包装视图中的第54行 返回视图函数(*args,**kwargs) 文件“/home/bigmac/anaconda3/lib/python3.7/site packages/rest\u framework/viewsets.py”,第125行,在视图中 返回自调度(请求,*args,**kwargs) 文件“/home/bigmac/anaconda3/lib/python3.7/site-packages/rest\u-framework/views.py”,第509行,已发送 响应=自身处理异常(exc) handle_异常中的文件“/home/bigmac/anaconda3/lib/python3.7/site packages/rest_framework/views.py”,第469行 自举未捕获异常(exc) 文件“/home/bigmac/anaconda3/lib/python3.7/site packages/rest\u framework/views.py”,第480行,在raise\u uncaught\u异常中 加薪 文件“/home/bigmac/anaconda3/lib/python3.7/site-packages/rest_-framework/views.py”,第506行,已发送 响应=处理程序(请求、*args、**kwargs) 文件“/home/bigmac/Documents/Bernard_Quests/ALUTA3.0/ALUTA/api/views.py”,第89行,addToCart Cart.addToCart(项目) 文件“/home/bigmac/Documents/Bernard_Quests/ALUTA3.0/ALUTA/api/cart.py”,第7行,addToCart 如果我在项目中: NameError:未定义名称“items”


1条回答
网友
1楼 · 发布于 2024-04-26 12:57:10

试试这个

在使用全局作用域之前,还应在全局作用域中声明

class Cart:
   items = {}
   def addToCart(item):
       global items
       var_items = items
       for i in item:
          if i in var_items:
            items[i] += item[i]
          else:
            var_items.update(item)
            
   def removeFromCart(item):
      global items
      var_items = items
      for i in item:
         if i in var_items and var_items[i] > 1:
            items[i] -= 1
        elif i in var_items and var_items[i] <= 1:
            items.pop(i, None)

请参阅此https://docs.python.org/3/reference/simple_stmts.html#the-global-statement

相关问题 更多 >