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