Я получаю ошибку NoReverseMatch, когда пытаюсь подключиться к своему URL, и я не уверен, в чем проблема. Спасибо за любую помощь. Вот мой код:
cart / models.py
from shop.models import Product
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()
class Meta:
db_table = 'CartItem'
def sub_total(self):
return self.product.price * self.quantity
def __str__(self):
return self.product
cart / views.py
Кажется, что ошибка связана сздесь метод add_cart, говорящий, что для него нет обратного хода.
from shop.models import Product
from .models import Cart, CartItem
from django.contrib import messages
from django.core.exceptions import ObjectDoesNotExist
def _cart_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=_cart_id(request))
except Cart.DoesNotExist:
cart = Cart.objects.create(
cart_id = _cart_id(request)
)
cart.save()
try:
cart_item = CartItem.objects.get(product=product, cart=cart)
if cart_item.quantity < cart_item.product.stock:
cart_item.quantity += 1
cart_item.save()
else:
messages.add_message(request, messages.INFO,
'Sorry, no more available!')
except CartItem.DoesNotExist:
cart_item = CartItem.objects.create(
product = product,
quantity = 1,
cart = cart
)
cart_item.save()
return redirect('cart_detail')
def cart_detail(request, total=0, counter=0, cart_items=0):
try:
cart = Cart,objects.get(cart_id=_cart_id(request))
cart_items = CartItem.objects.filter(cart=cart)
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))
cart / urls.py
from django.urls import path
from . import views
urlpatterns = [
path('add/<int:product_id>/', views.add_cart, name='add_cart'),
path('', views.cart_detail, name='cart_detail'),
]
urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('shop/', include('shop.urls')),
path('cart/', include('cart.urls')),
]
Ошибка 