找不到带有参数“('books',)”和关键字参数“”的“product_list_by_category”的反向
Posted
技术标签:
【中文标题】找不到带有参数“(\'books\',)”和关键字参数“”的“product_list_by_category”的反向【英文标题】:Reverse for 'product_list_by_category' with arguments '('books',)' and keyword arguments '' not found找不到带有参数“('books',)”和关键字参数“”的“product_list_by_category”的反向 【发布时间】:2017-04-19 07:42:29 【问题描述】:我已经尝试了 *** 上的所有问题和答案,并阅读、编写和重写了我的模板,但我不断收到错误消息“Reverse for 'product_list_by_category' with arguments '('books',)' and keyword arguments ' ' 未找到。尝试了 1 种模式:['shop/(?P[-\W]+)/$']"
完整的踪迹在这里:
NoReverseMatch 在 /shop/ 未找到带有参数“('books',)”和关键字参数“”的“product_list_by_category”的反向操作。尝试了 1 种模式:['shop/(?P[-\W]+)/$'] 请求方法:GET 请求网址:http://localhost:3025/shop/ Django 版本:1.9.7 异常类型:NoReverseMatch 异常值:
Reverse for 'product_list_by_category' with arguments '('books',)' and keyword arguments '' not found. 1 pattern(s) tried: ['shop/(?P<category_slug>[-\\W]+)/$']
Exception Location: /home/namalliv/public_html/lib/python/Django-1.9.7-py3.4.egg/django/core/urlresolvers.py in _reverse_with_prefix, line 508
Python Executable: /usr/local/bin/python3.4
Python Version: 3.4.4
Python Path:
['/home/namalliv/public_html/villaproject',
'/usr/local/lib/python3.4/site-packages/python_magic-0.4.11-py3.4.egg',
'/home/namalliv/public_html/lib/python',
'/home/namalliv/public_html/lib/python/Django-1.9.7-py3.4.egg',
'/usr/local/lib/python34.zip',
'/usr/local/lib/python3.4',
'/usr/local/lib/python3.4/plat-linux',
'/usr/local/lib/python3.4/lib-dynload',
'/usr/local/lib/python3.4/site-packages']
Server time: Mon, 5 Dec 2016 01:22:25 +0000
Error during template rendering
In template /home/namalliv/public_html/villaproject/templates/shop/list.html, error at line 22
Reverse for 'product_list_by_category' with arguments '('books',)' and keyword arguments '' not found. 1 pattern(s) tried: ['shop/(?P<category_slug>[-\\W]+)/$']
12
13 % block content %
14 <div id="sidebar">
15 <h3>Catergories</h3>
16 <ul>
17 <li % if not category % class="selected" % endif %>
18 <a href="% url 'shop:product_list' %">All</a>
19 </li>
20 % for c in categories %
21 <li % if category.slug == c.slug % class="selected" % endif %>
22 <a href=" c.get_absolute_url "> c.name </a>
23 </li>
24 % endfor %
25 </ul>
26 </div>
27 <dir id="main" class="product_list">
28 <h1>% if category %
29 category.name % else %Products
30 % endif %
31 </h1>
32 % for product in products %
这是我的model.py
class Category(models.Model):
name = models.CharField(max_length=200,
db_index=True)
slug = models.SlugField(max_length=200,
db_index=True, unique=True)
class Meta:
ordering=('name',)
verbose_name = 'caterory'
verbose_name_plural = 'categories'
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse('shop:product_list_by_category', kwargs='slug': self.slug)
查看:
def product_list(request, category_slug=None):
category = None;
categories = Category.objects.all()
products = Product.objects.filter(available=True)
if category_slug:
category = get_object_or_404(Category, slug=category_slug)
products = products.filter(category=category)
return render(request, 'shop/list.html', 'category': category, 'categories': categories, 'products': products)
这是我的 urls.py
url(r'^(?P<category_slug>[-\W]+)/$', views.product_list, name='product_list_by_category'),
我的主要 urls.py 是
url(r'^shop/', include('shop.urls', namespace='shop')),
这是我的模板:
% block content %
<div id="sidebar">
<h3>Catergories</h3>
<ul>
<li % if not category % class="selected" % endif %>
<a href="% url 'shop:product_list' %">All</a>
</li>
% for c in categories %
<li % if category.slug == c.slug % class="selected" % endif %>
<a href=" c.get_absolute_url "> c.name </a>
</li>
% endfor %
</ul>
</div>
% endblock content %
【问题讨论】:
请发布错误消息完整的回溯以及您的主要urls.py
。
url(r'^shop/', include('shop.urls', namespace='shop')), 这是我的主要 urls.py
塞尔丘克来了
【参考方案1】:
您的网址格式使用\W
(大写W
),它匹配所有除了字母数字字符。您需要将其更改为小写,以便与字母数字字符匹配:
url(r'^(?P<category_slug>[-\w]+)/$', views.product_list, name='product_list_by_category'),
【讨论】:
以上是关于找不到带有参数“('books',)”和关键字参数“”的“product_list_by_category”的反向的主要内容,如果未能解决你的问题,请参考以下文章
找不到带有参数“(”,)”和关键字参数“”的“view_item”的反向
在“”类型上找不到带有“数字”类型参数的索引签名 - Typescript 编译器错误
找不到关键字参数“'client_id': 3”的“all_clients”反向。尝试了 1 种模式:['clients/all_clients/$']