前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django进阶篇 Rest framework (一)

Django进阶篇 Rest framework (一)

作者头像
小团子
发布2019-07-18 11:22:16
7100
发布2019-07-18 11:22:16
举报
文章被收录于专栏:数据云团数据云团

django rest framework(下面简称 drf)

在 django 中,路由匹配之后,会进行路由分发,这个时候会有两种选择模式,分别是 FBV 与 CBV。

1、FBV

fbv 就是在 url 中一个路径对应一个函数。

在视图函数中

2、CBV

cbv 就是在 url 中一个路径对应一个类,drf 主要使用 CBV。

在视图函数中

在路由匹配的时候看到 path("image", image.ImageView.as_view()),那这个 as_view() 是什么,既然没有在视图类中定义这个 as_view() 方法,就应该到父类(ImageView 的父类 View)中看下 View。

django 源码,路径是 \django\views\generic\base.py

3、django 的请求周期

根据 CBV 和 FBV django 的生命周期可以分两类

  • FBV:请求通过 uwsgi 网关,中间件,然后进入路由匹配,进入视图函数,连接数据库 ORM 操作,模板渲染,返回经过中间件,最终交给浏览器 response 字符串。
  • CBV:请求通过 uwsgi 网关,中间件,然后进入路由匹配,这里就与 FBV 有区别了,因为不再是视图函数而是视图类,会先经过父类-View 的 dispath 方法,进行请求方法的判断,再分发到视图类的方法,连接数据库-ORM 操作,模板渲染,返回经过中间件,最终交给浏览器 response 字符串。

在 drf 中主要使用 CBV,生命周期就变成:

请求通过 uwsgi 网关,中间件,然后进入路由匹配,这里就有区别了,先经过 drf 中-APIView 类中的 dispath 方法(这里假定视图类没有重写 APIView 中的 dispath 方法),在 dispath 中对 request 请求进行封装,反射回到视图类,连接数据库 ORM 操作,模板渲染,返回经过中间件,最终交给浏览器响应字符串。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-02-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据云团 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档