美好的一天,我收到以下错误:
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'),
我将不胜感激。
答案 0 :(得分:1)
尝试在get_absolute_url函数上将slug作为kwargs={'category_slug'=self.slug}
传递。
(会把它写成评论,但我没有足够的代表)