我怎样才能解决这个问题:NojverseMatch,在django?

时间:2016-03-22 19:05:37

标签: django django-templates

美好的一天,我收到以下错误:

Reverse for 'product_list_category' with arguments '('',)' and keyword arguments '{}' not found. 1 pattern(s) tried: ['item/(?P<category_slug>[-\\w]+)/$']

在这一特定行:

 <a href="{{ option.get_absolute_url }}">{{ option.name }}</a>

我真的没有看到任何错误。 这就是它在模板中的样子:

{% for option in categories %}
            <li {% if category.slug == option.slug %} class="selected"{% endif %}>
                <a href="{{ option.get_absolute_url }}">{{ option.name }}</a>
            </li>

        {% endfor %}

在我的模特中:

class Category(models.Model):
""" Model for a category """
name = models.CharField(max_length=200)
slug = models.SlugField(max_length=200, unique=True)

def __str__(self):
    return self.name

class Meta:
    ordering = ['name',]
    verbose_name = 'category'
    verbose_name_plural = 'Categories'

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

在我看来:

def products_list(request, category_slug=None):
category = None
categories = Category.objects.all()
products = Product.objects.filter(availability=True)
template = 'store/products.html'
if category_slug:
    category = get_object_or_404(Category, slug=category_slug)
    products = products.filter(category=category)
context = {
    'category': category,
    'categories': categories,
    'products': products
}
return render(request, template, context)

和我的网址:

 url(r'^$', products_list, name='products'),
url(r'^item/(?P<category_slug>[-\w]+)/$', products_list, name='product_list_category'),

我将不胜感激。

1 个答案:

答案 0 :(得分:1)

尝试在get_absolute_url函数上将slug作为kwargs={'category_slug'=self.slug}传递。 (会把它写成评论,但我没有足够的代表)