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  - - - - - - - - - +

 

 

 
posted @ 2019-11-15 15:52  www.pu  Views(211)  Comments(0Edit  收藏  举报