python Django DetailView的方法的生命周期是什么?

时间:2014-02-24 10:41:21

标签: python django

当您编写扩展Django DetailView的视图时,您可以覆盖各种方法,例如get_queryset()get_object()get_context_data()

我在get_context_data阅读'object'属性时遇到了困难。具体来说它似乎存在,但是类'对象':

def get_context_data(self, **kwargs):
  context = super(SectionTextDetailView, self).get_context_data(**kwargs)
    if object:
      print (str(object))
      ## in reality try some logic with the object here
    else:
      print("very bad!")
  return context

(打印“”)

我怀疑在get_object()之后调用了get_context_data()?这是真的吗?

我的整体问题是 - View类中方法的生命周期(评估顺序)是什么,特别是DetailView

我查看了Django文档中DetailViewSingleObjectMixin的参考条目,似乎没有明确提到这一点。

1 个答案:

答案 0 :(得分:5)

此处未定义任何名为object的内容。唯一具有该名称的是内置的Python类型。

您应该使用self.object。查看the code时,会在调用get_object时立即调用get(),因此它应该可以立即使用。