2017-08-19 47 views
0

我創建了一個簡單的分類模型。Django:分類模型中的URL錯誤

模型

我創建如下。我在哪些模型文件中犯了錯誤?謝謝你的幫助。

models.py我添加到文件中的代碼如下。

class Category(models.Model): 
    category_name = models.CharField(max_length=250) 
    category_desc = models.TextField() 
    slug = models.SlugField(max_length=250, unique=True) 

class Meta: 
    ordering = ('category_name',) 
    verbose_name = 'category' 
    verbose_name_plural = 'Categories' 

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

def __str__(self): 
    return self.category_name 

views.py我加入到文件中的代碼如下。

def article_category(request, category_slug): 
    categories = Category.objects.all() 
    article = Article.objects.filter(article_status='published') 
    if category_slug: 
     category = get_object_or_404(Category, slug=category_slug) 
     article = article.filter(category=category) 
    template = 'article/category.html' 
    context = {'article': article} 
return render(request, template, context) 

url.py

url(r'^category/(?P<category_slug>[-\w]+)/$', article_category, name='article_category'), 

的index.html我加入到文件中的代碼如下。

<a href="{{ articles.article_category.get_absolute_url }}">{{ article.article_category }}</a> 
+1

顯示完整的錯誤堆棧請 –

+0

沒有錯誤只是slug區域瀏覽器不會出現。謝謝你。 – scout

回答

0

您應該刪除非SENS categories變量在你看來,如果你不使用它。

您不能在您的實例上調用.filter()方法。 變化:

if category_slug: 
    category = get_object_or_404(Category, slug=category_slug) 
    article = article.filter(category=category) 

到:

if category_slug: 
    category = get_object_or_404(Category, slug=category_slug) 
    article = Article.objects.filter(article_status='published', category=category) 

提供URL蛞蝓,該條件是無用的反正。

article變量是一個列表,其中包含所有通過這些過濾器的條目。它必須是articles

什麼index.html與您的看法有關,如果您渲染article/category.html

如果要顯示按該類別過濾的所有文章,爲什麼要渲染article/category.html

爲什麼你不使用ForeignKey這種關係。

如果它的文章列表,正如我所說的,在你的模板,你應該有這樣的事情(假設你改名articlearticles):

{% for article in articles %} 
    <a href="{{ article.get_absolute_url }}">{{ article.name }}</a> 
{% endfor %} 

您還沒有表現出文章的模式,所以我認爲有.get_absolute_url.name

問我,如果你還沒有明白的東西。