2014-11-01 65 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