19.drf response及源码分析】的更多相关文章

源代码位于:response.py   REST framework 提供一个 Response 类来支持 HTTP内容协商,该类允许返回可以呈现为多种类型的内容,具体取决于客户端的请求.   这个 Response 类是 Django中 SimpleTemplateResponse 类的一个子类. Response 对象使用Python原生的数据类型进行初始化. 然后REST framework 使用标准的HTTP内容协商来确定如何呈现最终的响应内容.   我们并不一定非要使用DRF的 Res…
前言 APIView中的dispatch是整个请求生命过程的核心方法,包含了请求模块,权限验证,异常模块和响应模块,我们先来介绍请求模块 请求模块:request对象 源码入口 APIView类中dispatch方法中的:request=self.iniialize_request(*args, **kwargs),源码如下: def initialize_request(self, request, *args, **kwargs): """ Returns the ini…
前言 上一篇分析了请求模块的源码,如下: def initialize_request(self, request, *args, **kwargs): """ Returns the initial request object. """ parser_context = self.get_parser_context(request) return Request( request, parsers=self.get_parsers(), a…
异常模块源码入口 APIView类中dispatch方法中的:response = self.handle_exception(exc) 源码分析 我们点击handle_exception跳转,查看该方法源码 def handle_exception(self, exc): """ Handle any exception that occurs, by returning an appropriate response, or re-raising the error. &…
前言 渲染模块的原理和解析模块是一样,drf默认的渲染有2种方式,一种是json格式,另一种是模板方式. 渲染模块源码入口 入口:APIView类中dispatch方法中的:self.response = self.finalize_response(request, response, *args, **kwargs) 渲染模块源码分析 我们首先点击finalize_response进入查看源码 def finalize_response(self, request, response, *a…
Django REST framework 简介   在序列化与反序列化时,虽然操作的数据不尽相同,但是执行的过程却是相似的,也就是说这部分代码是可以复用简化编写的.        开发REST API的视图中,虽然每个视图具体操作的数据不同,但增.删.改.查的实现流程基本套路化,所以这部分代码也是可以复用简化编写的:增:校验请求数据 -> 执行反序列化过程 -> 保存数据库 -> 将保存的对象序列化并返回删:判断要删除的数据是否存在 -> 执行数据库删除改:判断要修改的数据是否存…
REST framework的 Request 类扩展了Django标准的 HttpRequest ,添加了对REST framework请求解析和身份验证的支持. 源代码片段: class Request(object): """ Wrapper allowing to enhance a standard `HttpRequest` instance. Kwargs: - request(HttpRequest). The original request instanc…
一.前言 1.1.安装 两种方式: github pip直接安装 pip install django-rest-framework 1.2.需要先了解的一些知识 理解下面两个知识点非常重要,django-rest-framework源码中到处都是基于CBV和面向对象的封装 (1)面向对象封装的两大特性 把同一类方法封装到类中 将数据封装到对象中 (2)CBV 基于反射实现根据请求方式不同,执行不同的方法 原理:url-->view方法-->dispatch方法(反射执行其它方法:GET/PO…
目录 Django rest framework(1)----认证 Django rest framework(2)----权限 Django rest framework(3)----节流 Django rest framework(4)----版本 Django rest framework(5)----解析器 Django rest framework(6)----序列化 Django rest framework(7)----分页 一.基础 1.1.安装 两种方式: github pip…