NoReverseMatch: обратное для update_cart с аргументами ((',)) не найдено. Попробован 1 шаблон (ов): ['cart / (? P <slug>[\\ w -] +) / $'] - PullRequest
0 голосов
/ 02 апреля 2020

Я получил эту ошибку, используя django 2.0.7. Вот мои коды:

urls.py: 
urlpatterns = [

url(r'^home/$', HomeView.as_view(), name='ACRMS-Home'),

url(r'^cart/(?P<slug>[\w-]+)/$', carts_views.update_cart, name='update_cart'),

url(r'^cart/$', carts_views.view, name="cart"),

]


views.py in carts:

def view(request):
    cart = Cart.objects.all()[0]
    context = {"cart": cart}
    template = "cart/view.html"
    return render(request, template, context)

def update_cart(request, slug):
    cart = Cart.objects.all()[0]
    try:
        product = Product.objects.get(slug=slug)
    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"))

template:

<div>
<h1>{{ product.name }} <a href='{% url "update_cart" product.slug %}' class ='pull-right'>Add to Cart</a></h1>
</div>

Я пытаюсь добавить товар в корзину, но получаю эту ошибку. Я не могу сказать, почему он не может найти обратную модель, так как я очень плохо знаком с django. Пожалуйста помоги. Спасибо!

1 Ответ

0 голосов
/ 02 апреля 2020

Вам нужно передать переменную product в шаблон

def view(request):
    cart = Cart.objects.all()[0]
    products= Product.objects.all()
    context = {
         "cart": cart,
         "products: products
    }
    template = "cart/view.html"
    return render(request, template, context)
{% for product in products %}
<div>
    <h1>{{ product.name }} <a href='{% url "update_cart" product.slug %}' class ='pull-right'>Add to Cart</a></h1>
</div>
{% endfor %{
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...