使用Django CBV而不覆盖get_context_data

时间:2014-11-01 19:53:10

标签: python django

无论如何,我可以利用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访问它?

1 个答案:

答案 0 :(得分:0)

我无法找到任何理由来定义此方法以获得标题。 DetailView的重点在于您可以通过{{ object }}访问模板中的对象。那么为什么不做{{ object.title }}