2014-10-12 94 views
1

希望在每個博客分類索引頁面中使用基於django類的listview顯示分類標題。我想要做的是在每個選定的類別頁面中顯示每個category.title。但沒有顯示。下面是模型,視圖,模板,它必須是我錯過的小東西。在django listview中顯示分類標題

# models.py 
class Category(models.Model): 
    title = models.CharField(_('name'), max_length=100,) 
    slug = models.SlugField(_('url'), max_length=250, unique=True) 
    summary = models.TextField(_('summary'), max_length=255) 

class Post(models.Model): 
    category = models.ForeignKey(Category)) 
    title = models.CharField(_('title'), max_length=255) 
    slug = models.SlugField(_('url'), max_length=250, unique=True) 
    content= models.TextField(_('summary'), null=True) 

# view.py 
class PostCategoryMixin(object): 
    def get_context_data(self, **kwargs): 
     context = super(PostCategoryMixin, self).get_context_data(**kwargs) 
     context['category'] = Category.objects.filter(is_public=True) 
     return context   

class PostList(PostCategoryMixin, ListView): 
    model = Post 
    queryset = Post.objects.filter(is_public=True) 
    template_name = 'post/post_list.html' 

class PostCategoryView(BlogCategoryMixin, ListView): 
    template_name = 'post/post_list.html' 
    model = Post 
    def get_queryset(self): 
     return Post.objects.filter(category__slug=self.kwargs.get('slug')).filter(is_public=True) 

# post_list.html 
{{ category_title }} 

上面的模板代碼未觸發任何可言,我該怎麼考慮所選類別頁面(例如顯示類別標題,如果選擇「軟件」類別,我希望顯示「軟件」作爲頁面標題。

回答

0

有幾件事錯在這裏,但最明顯的是,你沒有一個叫您的上下文category_view變量,所以這並不奇怪,試圖打印輸出什麼。

你所擁有的是一個名爲category的變量,它(令人困惑)實際上是一個類別列表。必須通過該列表進行迭代並打印每一個標題:

{% for cat in category %} 
    {{ cat.title }} 
{% endfor %} 

(雖然你可能應該變量重命名爲「類」)。

編輯再一次,它不是那麼多,你錯過了一些小東西,但你只是沒有做你需要做的事情,以獲得你想要的結果。如果你想打印出一個特定的類別,那麼你需要在某個地方從數據庫中獲取該類別,而你根本就沒有這樣做。

你可以有一個更具體的更換您的類別查詢,並使用get代替filter

context['category'] = Category.objects.filter(slug=self.kwargs['slug'], is_public=True) 

但請注意,這不會在PostList視圖中工作,這對於一些原因是共享同樣的模板,因爲這個觀點沒有slu k克瓦格。

+0

是的,這確實打印出類別 - 所有類別的順序。就此而言,事情很簡單,但事情是當我點擊(例如'照片'類別)時,我希望將'照片'顯示爲類別標題 -

照片

。我應該看看什麼,猜猜這是對views.py的處理,我錯過了一些小東西。 – sunjoo 2014-10-12 11:58:01

+0

每個類別中的所有帖子都取得了良好的...只是我希望在post_list.html模板中的{{category.title}}中的每個相應類別的博客文章中打印出「category.title」 。類別有'title,slug,summary,is_public'字段。仍然有效,我或許應該再次看待所有? – sunjoo 2014-10-12 12:56:02