现阶段django开发是用视图函数多呢?还是类通用视图?
看到有人在segmentfault中陈述:视图函数拓展性就没有这么灵活。类通用视图可以继承,可用使用装饰器等好处。
不过我做了一个单表的CURD(增删改查)之后,发现一个问题是。现实开发中有很多复杂的功能是多表操作的,类通用视图处理这些复杂的逻辑时就显得有些疲软了.....
各们Django使用者,有什么好建议,或者是我还没对类通用视图研究不透彻?请大家指点一下....
PHP中文网2017-04-18 09:52:05
能用 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
巴扎黑2017-04-18 09:52:05
類別視圖的話可以共享一些資料,而使用普通的視圖函數這方面就要寫多一些程式碼。實際上,無論是哪種視圖,多表的關聯操作都是可以做到的,不過對於類視圖一般用於RESTful的接口時用的比較多。