python 框架(三十六)之Django和DRF

本文简述了Django与DRF框架的区别和作用,DRF作为Django的超集,专注于REST接口,提供了更高级别的功能如权限、分页、限流等。Django教程主要介绍ORM、模板、URL、admin等基础,而DRF教程则关注serializers和views的编写。通过models->serializers->views->urls的配置,可以快速构建后端。部署部分涉及接口规范、URL路由、数据库迁移和接口测试工具Postman的使用。DRF的请求和响应处理源码分析帮助理解其内部工作流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下面这两张图分别是Django的框图和Django REST Framwork的框图。

imgDjango

img

Django REST Framwork

Django在Python的web框架中是出了名的重,而DRF即Django REST Framwork更重,这使得广大小伙伴在做完了Django的TutorialDRF的Tutorial之后仍云里雾里。要知道,相比于flask只需要一个装饰器和一个函数就可以把服务跑起来,这个学习路线确实是有点繁琐。而且在花时间跑完这些tutorial之后,却陷入了一个更大的疑惑就是,搞这些有的没的是为了啥?

简洁是一种力量,我试着用最简短的语言描述一下为什么有Django以及为什么有了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  - - - - - - - - - +

详解回顾


"""
1、接口:什么是接口、restful接口规范
2、CBV生命周期源码 - 基于restful规范下的CBV接口
3、请求组件、解析组件、响应
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值