編寫基於類的視圖的最佳方式是什麼,它們都顯示基於日期的對象和表單?用例是一個站點索引頁面視圖,它既顯示當前的對象又有一個聯繫表單。什麼是寫一個基於類的基於視圖的django的好方法,它既顯示基於日期的對象又顯示一個表單?
起初我想到使用TodayArchiveView和ContactFormView作爲我的網站索引頁面視圖的mixin。但是,TodayArchiveView繼承自BaseDateListView,ContactFormView繼承自ProcessFormView。 ProcessFormView和BaseDateListView實現get()並最終調用render_to_response具有不同的數據,所以我認爲這將不起作用,因爲即使我可以通過超級調用這兩個都會返回? (我甚至不確定我對此的看法是否正確;我仍然圍繞着多重繼承進行包裝)。
然後我想寫我自己的get(),它結合了兩個get的功能,因爲他們的功能不會相互衝突,據我所知。所以最後看起來像這樣:
def get(self, request, *args, **kwargs):
form_class = self.get_form_class()
form = self.get_form(form_class)
self.date_list, self.object_list, extra_context = self.get_dated_items()
context = self.get_context_data(form=form, object_list=self.object_list,
date_list=self.date_list)
context.update(extra_context)
return self.render_to_response(context)
這是正確的做法嗎?
作爲一個更大的問題,你怎麼知道哪些mixin可以相互使用?我不得不去django源代碼來認識到兩個類都在實現get()。
在實驗上,我已證實此方法有效。仍然想知道在概念上它是否正確。 – sandinmyjoints 2012-02-09 03:35:20