【问题标题】:Reverse for 'cart_add' not found. 'cart_add' is not a valid view function or pattern name找不到 \'cart_add\' 的反向。 \'cart_add\' 不是有效的视图函数或模式名称
【发布时间】:2022-10-04 23:37:07
【问题描述】:

我想使用 django-shopping-cart 0.1 ,但我收到了这个错误:

网址.py

from django.urls import path
from . import views
app_name='shop'
  urlpatterns = [
    path('',views.accueil, name='home'),
    path('cart/add/<int:id>/', views.cart_add, name='cart_add'),
    path('cart/item_clear/<int:id>/', views.item_clear, name='item_clear'),
    path('cart/item_increment/<int:id>/',
     views.item_increment, name='item_increment'),
    path('cart/item_decrement/<int:id>/',
     views.item_decrement, name='item_decrement'),
    path('cart/cart_clear/', views.cart_clear, name='cart_clear'),
    path('cart/cart-detail/',views.cart_detail,name='cart_detail'),

]

视图.py

from django.shortcuts import render, redirect
from testshop.models import Product
from cart.cart import Cart

def cart_add(request, id):
  cart = Cart(request)
  product = Product.objects.get(id=id)
  cart.add(product=product)
  return redirect("home")


def item_clear(request, id):
  cart = Cart(request)
  product = Product.objects.get(id=id)
  cart.remove(product)
  return redirect("cart_detail")


def item_increment(request, id):
  cart = Cart(request)
  product = Product.objects.get(id=id)
  cart.add(product=product)
  return redirect("cart_detail")


def item_decrement(request, id):
  cart = Cart(request)
  product = Product.objects.get(id=id)
  cart.decrement(product=product)
  return redirect("cart_detail")


def cart_clear(request):
 cart = Cart(request)
 cart.clear()
 return redirect("cart_detail")


def cart_detail(request):
  return render(request, 'cart/cart_detail.html')

主页.html

{% for product in products %}
    <p>{{produit.name}}<br>
       {{produit.price}}
       <a href="{% url 'cart_add' product.id %}">Add</a>
    </p>
    
{% endfor %}

链接&lt;a href="{% url 'cart_add' product.id %}"&gt;Add&lt;/a&gt; 无效, 我有这个错误(未找到“cart_add”的反向。 “cart_add”不是有效的视图函数或模式名称.)

【问题讨论】:

标签: python django django-views


【解决方案1】:

如果您设置了app_name,则必须将其包含在{% url %} 中:

<a href="{% url 'shop:cart_add' product.id %}">Add</a>

我假设您还在 INSTALLED_APPS 中放置了“django-shopping-cart”。

Django DOCS

【讨论】:

    猜你喜欢
    • 2018-01-25
    • 2020-12-01
    • 2019-06-27
    • 2021-05-18
    • 2018-11-19
    • 2019-04-21
    • 2021-07-18
    • 2019-04-06
    • 2019-08-13
    相关资源
    最近更新 更多