找不到带有参数“('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/$']

获取带有名称的活动 URL 列表

找不到参数的隐式值