NoReverseMatch at / Reverse for 'single_product' 没有未找到的参数。尝试了 1 种模式:['products/(?P<slug>)/$']

NoReverseMatch at / Reverse for 'single_product' with no arguments not found. 1 pattern(s) tried: ['products/(?P<slug>)/$']

我在使用 django 2.2 时遇到了这个错误,这是我的代码

urls.py

app_name = 'products'

urlpatterns = [
    url(r'^$', product_list, name='product-list'),
    url(r'^(?P<slug>.*)/$',single, name="single_product"),
    url(r'^category/(?P<slug>.*)/$',category_single,name="category")
]

views.py 产品型号

def get_absolute_url(self,):
        return HttpResponseRedirect(reverse('single_product',args=[self.slug]))

模板

<h3>{{ product }}</h3>
<p>{{ product.description }}</p>
<p>{{ product.get_price }}</p>
<p>
   <a href ="{% url 'products:single_product' %}" class = "btn btn-primary" role = "button">
      View Product
   </a>

您没有在 url 中传递 slug,而是为您的模式提供了一个参数。

所以改变 html

<a href ="{% url 'products:single_product' product.slug %}" class = "btn btn-primary" role = "button">
      View Product
   </a>