首页  >  问答  >  正文

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

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

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

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

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

阿神阿神2720 天前428

全部回复(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
  • 取消回复