UnboundLocalError at / cart / - сообщение об ошибке с веб-сайта carts / views.py ", ** строка 24, в update_cart, если нет продукта в cart.products.all (): UnboundLocalError: локальная переменная 'product', на которую ссылается до присвоения
Это сообщение об ошибке, которое я получаю, когда нажимаю кнопку "добавить в корзину" на моем веб-сайте. ** - сообщение об ошибке в терминале
views.py - вот мои взгляды на корзину. Насколько я понимаю, проблема заключается в этом файле.
from django.shortcuts import render, HttpResponseRedirect
from django.urls import reverse
# Create your views here
.
from fuisce.models import Product
from .models import Cart
def view(request):
cart = Cart.objects.all()[0]
context = {"cart": cart}
template = "cart/view.html"
return render(request, template, context)
def update_cart(request, product_id):
cart = Cart.objects.all()[0]
try:
product = Product.objects.get(product_id=product_id)
except Product.DoesNotExist:
pass
except:
pass
if not product in cart.products.all():
cart.products.add(product)
else:
cart.products.remove(product)
return HttpResponseRedirect(reverse('cart'))
***urls.py***
from django.urls import path
from . import views
from carts import views as cart_views
urlpatterns = [
path('cart/', cart_views.view, name='cart'),
path('cart/<product_id>', cart_views.update_cart, name='update_cart'),
]
***models.py - cart ***
from django.db import models
# Create your models here.
from fuisce.models import Product
class Cart(models.Model):
products = models.ManyToManyField(Product)
total = models.DecimalField(max_digits=10, decimal_places=2, default=0.00)
timestamp = models.DateTimeField(auto_now_add=True, auto_now=False)
updated = models.DateTimeField(auto_now_add=False, auto_now=True)
active = models.BooleanField(default=True)
def __string__(self):
return "Cart id: %s" %(self.id)
***models.py -Product***
from django.db import models
from django.utils import timezone
from django.contrib.auth.models import User
# Create your models here.
class Product(models.Model):
product_id = models.AutoField
product_name = models.CharField(max_length=50)
price = models.DecimalField(max_digits=10, decimal_places=2)
desc = models.TextField()
timestamp = models.DateTimeField(auto_now_add=True, auto_now=False)
updated = models.DateTimeField(auto_now_add=False, auto_now=True)
active = models.BooleanField(default=True)
image = models.ImageField(upload_to='fuisce/images', default="")
def __str__(self):
return self.product_name
Я считаю, что в этих файлах есть проблема, но из исследований в Интернете я не могу точно определить, что это такое. Корзина на моем веб-сайте работала, пока я не изменил свой файл views.py. Любая помощь будет очень полезной. оценили.