搜尋

首頁  >  問答  >  主體

python - django开发中纠结于视图函数与类通用视图

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

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

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

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

阿神阿神2769 天前459

全部回覆(4)我來回復

  • PHP中文网

    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

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-18 09:52:05

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

    回覆
    0
  • 巴扎黑

    巴扎黑2017-04-18 09:52:05

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

    回覆
    0
  • 高洛峰

    高洛峰2017-04-18 09:52:05

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

    回覆
    0
  • 取消回覆