00 django和drf有什么不同
最少的语言描述Django?
将数据库的东西通过ORM的映射取出来,通过view文件,按照template文件排出的模板渲染成HTML。当用户请求相应的url时,返回相应的结果。
最少语言描述DRF?
将数据库的东西通过ORM的映射取出来,通过view和serializers文件绑定REST接口,当前端请求时,返回序列化好的json。
最少语言描述DRF在Django的基础上做了什么?
DRF是Django的超集,去掉了模板的部分,提供了一个REST的接口,同时也提供了满足该接口的代码工作流。同时,在REST的规范下,升级了权限和分页等功能,增加了限流和过滤搜索等功能。
Django和DRF的tutorial分别讲了什么?
Django的tutorial讲的是Django的ORM、template、url、admin以及Django怎么run起来等基础知识。
而DRF的tutorial讲的是serializers怎么写,view怎么写,在drf中view这一层既可以一个个get、post、从头开始写起,也可以采用抽象程度比较高的viewset去按配置生成。另外还讲了一些drf升级和新增的功能。
小结
Django+DRF将后端变成一种声明式的工作流,只要按照models->serializers->views->urls的模式去一个个py文件去配置,即可生成一个很全面的通用的后端。当然,如果需求不那么通用,这种设计就变成了一个累赘。
事实上,过重的设计降低了灵活性,报错基本得去翻源码实现,然后再吐槽一遍源码实现,这也是有得必有失。当然,现在Django和DRF一直在优化middeware的设计,也有api_view这种类似flask的装饰器的实现方式,也是在灵活性方面的一种权衡,不过对于初学者来说,仍然是个不大不小的坎。
部署
前后端分离的部署也可以用一张图来描述如下,这么一看是不是很清晰了呢!
the web client <-> nginx <-> the socket <-> uwsgi <-> Django
the web client <-> nginx <-> the socket <-> uwsgi <-> DRF
-> vue.js - - - - - - - - - +