python - django开发中纠结于视图函数与类通用视图
阿神
阿神 2017-04-18 09:50:05
0
4
455

现阶段django开发是用视图函数多呢?还是类通用视图?

看到有人在segmentfault中陈述:视图函数拓展性就没有这么灵活。类通用视图可以继承,可用使用装饰器等好处。

不过我做了一个单表的CURD(增删改查)之后,发现一个问题是。现实开发中有很多复杂的功能是多表操作的,类通用视图处理这些复杂的逻辑时就显得有些疲软了.....

各们Django使用者,有什么好建议,或者是我还没对类通用视图研究不透彻?请大家指点一下....

阿神
阿神

闭关修行中......

全部回覆(4)
Ty80

能用 cbv(class based view) 的方式開發就盡量別用 fbv(function based view)。 Django 的開發組織也推薦大家使用 cbv 的方式來開發。用cbv 優點非常多,最顯而易見的就是提升開發效率的問題,基本一個簡單的增刪改查不需要寫幾行程式碼,只要弄清楚每個view 是乾嘛的拿來繼承就好了,有額外的需要自己寫個mixin 擴充功能即可。個人感覺開發效率之少提升 2 倍以上。那麼要說缺點(當然我覺得這個應該是優點,強制讓你去閱讀 Django 源碼),就是需要理解熟悉 Django 自帶的所有 view 的功能以及 view 每個方法都在幹什麼。只有了解 view 的功能才能在一些複雜的操作中進行適當的繼承來編寫合適的 mixin 。當你能熟練用 cbv 開發的時候相信你對 Django view 這塊的源碼也會熟悉很多。

推薦一個輔助 學習開發 cbv 工程的網站:ccbv。結合 Django 原始碼學習 cbv 非常清晰。

最後再放一個我擴充 cbv 用來做 API 服務的函式庫,可以參考一下如何寫 mixin 完成一些複雜的功能。當然也歡迎使用 dss 來快速開發資料介面(沒有打廣告,認真臉):

django simple serializer

Ty80

沒明白你想問什麼,不管單表還是多表,都是 Model 層面的,而視圖函數和視圖類別都是 View 層面的,它們之間會有什麼掣肘嗎?沒有吧

巴扎黑

類別視圖的話可以共享一些資料,而使用普通的視圖函數這方面就要寫多一些程式碼。實際上,無論是哪種視圖,多表的關聯操作都是可以做到的,不過對於類視圖一般用於RESTful的接口時用的比較多。

小葫芦

大專案盡量用類別通用視圖

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板