登录

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

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

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

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

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


# Python
高洛峰 高洛峰 2713 天前 808 次浏览

全部回复(4) 我要回复

  • 三叔

    三叔2016-11-14 11:28:14

    能用 cbv(class based view) 的方式开发就尽量别用 fbv(function based view)。Django 的开发组织也在推荐大家使用 cbv 的方式进行开发。用 cbv 优点非常多,最显而易见的就是提升开发效率的问题,基本一个简单的增删改查不需要写几行代码,只要弄清楚每个 view 是干嘛的拿来继承就好了,有额外的需要自己写个 mixin 扩展即可。个人感觉开发效率之少提升 2 倍以上。那么要说缺点(当然我觉得这个应该是优点,强制让你去阅读 Django 源码),就是需要理解熟悉 Django 自带的所有 view 的功能以及 view 每个方法都在干什么。只有理解了 view 的功能才能在一些复杂的操作中进行合适的继承编写合适的 mixin 。当你能熟练用 cbv 开发的时候相信你对 Django view 这块的源码也会熟悉很多。

    回复
    0
  • 三叔

    三叔2016-11-14 11:27:55

    没明白你想问什么,不管单表还是多表,都是 Model 层面的,而视图函数和视图类都是 View 层面的,它们之间会有什么掣肘吗?没有吧

    回复
    0
  • 欧阳克

    欧阳克2016-11-14 11:27:38

    大项目尽量用类通用视图

    回复
    0
  • 三叔

    三叔2016-11-14 11:27:28

    类视图的话可以共享一些数据,而使用普通的视图函数这方面就要写多一些代码。实际上,无论是哪种视图,多表的关联操作都是可以做到的,不过对于类视图一般用于RESTful的接口时用的比较多。

    回复
    0
  • 取消 回复 发送