2014-11-01 76 views
0

有沒有我可以利用Django的默認CBV的優勢,而不會導致超級調用get_context_data發送額外的信息。使用Django CBV沒有覆蓋get_context_data

例如,我有一個網站,CBV可以自己處理99%的工作,但我想發送一些小的靜態信息,如頁面標題,並且似乎沒有必要使用get_context_data來完成這個。

我知道我能做到以下幾點:

class Page(DetailView): 
    model: MyModel 
    template_name: 'something.html' 
    title: 'Some Page Title' 

和參考稱號,我爲view.title模板。不過,我希望頁面標題是我模型的一個屬性。這我能夠通過以下的事情:

get_context_data(self, **kwargs): 
    context = super(Page, self).get_context_data(**kwargs) 
    context['title'] = 'Page Title | %s' % (self.get_object().title) 

    return context 

是否有可能對我來說,引用被稱爲在詳細視圖中的單個模型,而不運行查詢或使用get_context_data這樣我就可以得到模型的title屬性和在我的模板中使用它作爲view.title

+0

我不確定你想要什麼,但也許這個'Page Title | {{object.title}}' – madzohan 2014-11-01 21:25:19

回答

0

我看不出任何理由來定義這個方法只是爲了獲得標題。 DetailView的全部要點是您可以通過{{ object }}訪問模板中的對象。那麼爲什麼不只是做{{ object.title }}

+0

還有其他的視圖都共享相同的佈局模板,並且會有不同於{{object.title}}'的東西,所以我希望能夠在視圖中存儲所有標題.title',所以我可以把它與一個單一的if語句:'{%if view.title%}'... – user2989731 2014-11-02 17:52:13

+0

那麼,我恐怕我真的不明白你在問什麼。您可以使用已由通用視圖提供的數據,也可以定義'get_context_data'來提供自己的數據。 – 2014-11-02 18:59:15

+0

而你特別提出瞭如何訪問你的模型屬性,所以我更加困惑。 – 2014-11-02 19:09:37