当您编写扩展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文档中DetailView
和SingleObjectMixin
的参考条目,似乎没有明确提到这一点。
答案 0 :(得分:5)
此处未定义任何名为object
的内容。唯一具有该名称的是内置的Python类型。
您应该使用self.object
。查看the code时,会在调用get_object
时立即调用get()
,因此它应该可以立即使用。