视图家族 视图家族在rest_framework源码位置和学习曲线为: rest_framework.views: 基本视图(APIView) rest_framework.generics: 工具视图(GenericAPIView) rest_framework.mixins: 视图工具集(Create/Destroy/List/Retrieve/Update) rest_framework.viewsets: 视图集 APIView 前几章代码都是基于APIView写的, 这里就不赘述了,…
一.简介 django rest framework 给我们带来了很多组件,除了认证.权限.序列化...其中一个重要组件就是视图,一般视图是和路由配合使用,这种方式给我们提供了更灵活的使用方法,对于使用者而言不同的视图具有不同的功能,这样我们可以根据需求定制自己视图.以下是官网传送门:http://www.django-rest-framework.org/api-guide/views/ 在之前的文章中,由于参杂了权限.认证等(如果不了解请看博客的以前的文章),但在本章中基本可以不使用,所进使…
一.简介 承接上篇文章Django Rest Framework源码剖析(二)-----权限,当服务的接口被频繁调用,导致资源紧张怎么办呢?当然或许有很多解决办法,比如:负载均衡.提高服务器配置.通过代理限制访问频率等,但是django rest framework自身就提供了访问频率的控制,可以从代码本身做控制. 二.频率控制内部原理概述 django rest framework 中频率控制基本原理基于访问次数和时间,通过计算实现,当然我们也可以自己定义频率控制方法.基本原理如下: 启用频率…
之前两篇博客springMVC源码分析--ViewResolver视图解析器(一)和springMVC源码解析--ViewResolverComposite视图解析器集合(二)中我们已经简单介绍了一些ViewResolver的知识,ViewResolver的主要功能就是根据配置的视图解析器实现类来生成一个View对象.接下来我们通过介绍常见InternalResourceViewResolver来对ViewResolver的运行流程有一个简单的了解和认识. 1.首先在配置文件中配置视图解析器 <…
解析admin的源码 第一步:项目启动,加载settings文件中的 INSTALLED_APPS 里边有几个app就加载几个,按照注册顺序来执行. 第二步:其中加载的是admin.py,加载每一个app下的admin.py文件 第三步:执行代码 第四步:看admin.site走的流程 咱走一下源码 总结一下: 第五步:执行register方法 admin.site.register(Book, BookAdmin) admin.site.register(Publish) class Mode…
上一篇博客springMVC源码分析--ViewResolver视图解析器(一)中我们介绍了一些springMVC提供的很多视图解析器ViewResolver,在开发的一套springMVC系统中是可以使用多个视图的,当然就需要配置多个视图解析器了,ViewResolverComposite简单来说就是使用简单的List来保存你配置使用的视图解析器. ViewResolverComposite中定义了两个变量: (1)private final List<ViewResolver> viewR…
视图家族 view:视图 generics:工具视图 mixins:视图工具集 viewsets:视图集 学习曲线: APIView => GenericAPIView => mixins的五大工具类 => generics中的工具视图 => viewsets中的视图集 一.GenericAPIView基类 # GenericAPIView是继承APIView的,完全兼容APIView # 重点:GenericAPIView在APIView基础上完成了哪些事? 1)get_quer…
一.简介 解析器顾名思义就是对请求体进行解析.为什么要有解析器?原因很简单,当后台和前端进行交互的时候数据类型不一定都是表单数据或者json,当然也有其他类型的数据格式,比如xml,所以需要解析这类数据格式就需要用到解析器(也可以将请求体拿到,然后利用其他模块进行解析). 二.基本使用 1.json解析器 同样以订单视图为例,添加json解析器,如下: from rest_framework.versioning import URLPathVersioning from rest_framew…
一.简介 分页对于大多数网站来说是必不可少的,那你使用restful架构时候,你可以从后台获取数据,在前端利用利用框架或自定义分页,这是一种解决方案.当然django rest framework提供了分页组件,让我们可以更灵活的进行分页. django rest framework提供了三种分页组件: PageNumberPagination:普通分页,查看第n页,每个页面显示n条数据 LimitOffsetPagination: 基于位置的分页,在第n个位置,向后查看n条数据,和数据库的sq…
一.简介 django rest framework 中的序列化组件,可以说是其核心组件,也是我们平时使用最多的组件,它不仅仅有序列化功能,更提供了数据验证的功能(与django中的form类似). 便于展现的序列化操作,我们需要在model添加外键.多对多情况.以下是新的models(请删除原有的数据库,重新migrate): models.py from django.db import models class UserInfo(models.Model): user_type_choic…