2016-03-22 11 views
1

Guten Tag, Ich erhalte den folgenden Fehler:Wie kann ich dieses Problem lösen: NoReverseMatch, in Django?

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

in dieser besonderen Linie:

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

Ich bin wirklich nichts falsch mit ihm zu sehen. Dies ist, wie es in der Vorlage aussieht:

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

     {% endfor %} 

und in meinen Modellen:

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]) 

und in meinen Ansichten:

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) 

und meine Urls:

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

Ich werde alle zu schätzen wissen Hilfe.

+0

Sind Sie sicher, dass Ihr Objekt 'Slug' gesetzt hat? Die Exception zeigt an, dass versucht wird, die Suche umzukehren, indem die leere Zeichenfolge als einziges Argument verwendet wird. –

+0

@PeterDeGlopper nicht sicher zu verstehen, was du gesagt hast –

+0

@PeterDeGlopper ja es hat eine Schnecke. Meine Kategorie hat nur zwei Felder, Name und Slug –

Antwort

1

Versuchen Sie, Slug wie kwargs={'category_slug'=self.slug} auf die Funktion get_absolute_url zu übergeben. (würde dies als Kommentar schreiben, aber ich habe nicht genug Rep)

+0

gleichen Ergebnis, es tut das gleiche –

+0

Ich habe vergessen "" auf der 'Kategorie_Slug' –

+0

Problem auf den offiziellen Kommentaren gelöst, vergiss mich dann –