簡體   English   中英

我該如何解決這個問題:django 中的 NoReverseMatch?

[英]How can I solve this issue: NoReverseMatch, in django?

美好的一天,我收到以下錯誤:

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'),

我將不勝感激任何幫助。

嘗試在 get_absolute_url 函數kwargs={'category_slug'=self.slug} slug 作為kwargs={'category_slug'=self.slug}傳遞。 (將其寫為評論,但我沒有足夠的代表)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM