0
当你写一个扩展Django的视图DetailView
可以覆盖各种方法,如get_queryset()
,get_object()
和get_context_data()
python Django DetailView的方法的生命周期是什么?
我在阅读了“对象”属性中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
的参考条目,似乎没有明确提及这一点。
是的,我意识到我粘贴代码后发生错误。 评估的顺序是get_object(),然后是get_context_data()。与django文档中看似隐含的内容相反,get_queryset()从来不会在DetailView中调用,因为我们正在处理单个对象而不是alist。 – scot
@scot'get_queryset()'* *将被调用,在['get_object'](https://github.com/django/django/blob/1.6/django/views/generic/detail.py#L21)方法。 – Alasdair
可能没有在我的堆栈中被调用,因为我重写get_object只使用objects.get(pk),然后不调用super() – scot