I don't think there's much explanation to this, the problem is straight forward. I get an error saying Edit: I added the full error traceback at the bottom.
Error:
"if i in items:
NameError: name 'items' is not defined"
code:
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)
How the function is called:
...
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)
Internal Server Error: /api/Orders/1/addToCart/ Traceback (most recent call last): File "/home/bigmac/anaconda3/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34, in inner response = get_response(request) File "/home/bigmac/anaconda3/lib/python3.7/site-packages/django/core/handlers/base.py", line 115, in _get_response response = self.process_exception_by_middleware(e, request) File "/home/bigmac/anaconda3/lib/python3.7/site-packages/django/core/handlers/base.py", line 113, in _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/home/bigmac/anaconda3/lib/python3.7/site-packages/django/views/decorators/csrf.py", line 54, in wrapped_view return view_func(*args, **kwargs) File "/home/bigmac/anaconda3/lib/python3.7/site-packages/rest_framework/viewsets.py", line 125, in view return self.dispatch(request, *args, **kwargs) File "/home/bigmac/anaconda3/lib/python3.7/site-packages/rest_framework/views.py", line 509, in dispatch response = self.handle_exception(exc) File "/home/bigmac/anaconda3/lib/python3.7/site-packages/rest_framework/views.py", line 469, in handle_exception self.raise_uncaught_exception(exc) File "/home/bigmac/anaconda3/lib/python3.7/site-packages/rest_framework/views.py", line 480, in raise_uncaught_exception raise exc File "/home/bigmac/anaconda3/lib/python3.7/site-packages/rest_framework/views.py", line 506, in dispatch response = handler(request, *args, **kwargs) File "/home/bigmac/Documents/Bernard_Quests/ALUTA3.0/ALUTA/api/views.py", line 89, in addToCart Cart.addToCart(item) File "/home/bigmac/Documents/Bernard_Quests/ALUTA3.0/ALUTA/api/cart.py", line 7, in addToCart if i in items: NameError: name 'items' is not defined
self
argument. – Klaus D.items
looks like a class attribute. UseCart.items
instead of global variables. Also I assume the methodsaddToCart
andremoveFromCart
belong to the class, Why are you not acceptingself
as an argument? Or at least using aclassmethod
decorator and accepting the class ascls
or some other name? – Abdul Aziz Barkat