DRF框架源码学习
文章平均质量分 80
Django REST framework (DRF)是基于Django实现的⼀个RESTful⻛格API框架,能够帮助我们快速开发RESTful⻛格的API。DRF框架是建⽴在Django框架基础之上,由Tom Christie⼆次开发的开源项⽬
敲代码敲到头发茂密
欲戴王冠,必承其重
展开
-
【Django】REST_Framework框架——序列化器serializers源码解析
1、在客户端请求时,使用序列化器可以完成对数据的反序列化(将字典格式的数据转化为模型对象)。2、在服务器响应时,使用序列化器可以完成对数据的序列化(将模型对象转化为字典格式的数据)。Serializer的构造方法为:使用序列化器进行反序列化输入时,需要进行验证,通过后,才能获取验证成功后的数据案例1:案例24.3、validate_字段名:对字段进行校验单个字段进行校验:项目名称不能多于10个字4.4、validate:多字段校验5、反序列化-保存数据前面的验证数据成功后,我们可以使用序列化原创 2022-10-26 08:43:42 · 2848 阅读 · 9 评论 -
Django rest_framework中PrimaryKeyRelatedField疑惑点解决
当使用PrimaryKeyRelatedField进行反序列输入操作时,要指定查询集,目的是进行校验。当从表的外键字段中设置了related_name选项时,需要用related_name指定的名称。当主表获取从表的数据是,默认使用模型类名小写_set。接口表和用例表的映射关系为一对多。原创 2022-10-03 10:44:15 · 1254 阅读 · 44 评论 -
【Django】REST_Framework框架——视图集ViewSet和ModelViewSet源码解析
继承APIView和ViewSetMixin;作用也与APIView基本类似,提供了身份认证、权限校验、流量管理等。ViewSet在开发接口中不经常用。原创 2022-09-12 14:24:45 · 2955 阅读 · 65 评论 -
【Django】REST_Framework框架——Mixin类和GenericAPIView中的视图子类源码解析
提供了几种后端视图(对数据资源进行增删改查)处理流程的实现,如果需要编写的视图属于这五种,则视图可以通过继承相应的扩展类来复用代码,减少自己编写的代码量。这五个扩展类需要搭配GenericAPIView通用视图基类来开发业务接口。原创 2022-09-02 08:16:15 · 929 阅读 · 59 评论 -
【Django】REST_Framework框架——GenericAPIView类源码解析
GenericAPIView继承自 APIView,也就是在 APIView基础上再做了一层封装。原创 2022-08-31 07:38:32 · 1502 阅读 · 51 评论 -
Django处理枚举(枚举模型)以及source的使用
定义模型类models.py;项目模型类、接口模型类、用例模型类name = models.CharField(help_text='项目名称', verbose_name='项目名称',desc = models.TextField(help_text='项目描述', blank=True, null=True)verbose_name = "项目表"CHOICES = [('1', '项目接口'),('2', '外部接口')]原创 2024-04-14 15:39:33 · 1408 阅读 · 42 评论 -
【Django】REST_Framework框架——APIView类源码解析
5、重新声明了一个新的as_views方法并在dispatch()进行路由分发前,会对请求的客户端进行身份认证、权限检查、流量控制。原创 2022-08-29 09:36:19 · 2031 阅读 · 68 评论 -
【django_restframework】序列化器字段校验规则
一、怎么校验创建的项目名是否是唯一的,当项目名name字段不唯一,怎么设置提示信息?class ProjectsSerializer(serializers.Serializer): create_time=serializers.DateTimeField(label='创建时间',help_text='创建时间', format='%Y年%m月%d日 %H时%M分%S秒',read_only=True)原创 2022-05-28 09:53:00 · 1543 阅读 · 34 评论 -
【Django-DRF框架】生成各种API接口文档
方式一:安装pipenv install coreapipipenv install Pygmentspipenv install Markdown配置REST_FRAMEWORK = { ...... #指定用于支持coreapi的Schema 'DEFAULT_SCHEMA_CLASS':'rest_framework.schemas.coreapi.AutoSchema'}在全局路由条目中,定义路由条目from rest_framework.documen原创 2022-05-21 09:58:27 · 946 阅读 · 0 评论 -
【DRF】视图集中GenericAPIVIew类的应用
需求1:当访问项目的列表数据时:获取所有的字段;现在访问项目的列表数据时:只展示项目名称和项目负责人,并且不分页;方法1:无过滤、排序、分页功能@action(methods=['GET'],detail=False)def names(self,request): queryset=self.get_queryset() list=[] for query in queryset: list.append({ 'name':query.原创 2022-05-20 09:06:57 · 324 阅读 · 0 评论 -
【爬坑】解决“ImportError: cannot import name ‘soft_unicode‘ from ‘markupsafe‘ ”的问题
解决办法:更换markupsafe版本为2.0.1:python -m pip install markupsafe==2.0.1原创 2022-05-20 08:56:03 · 1954 阅读 · 0 评论 -
【DRF】DRF中的路由器机制
一、各种常见需求需求1:获取项目信息,只输出项目的id和名称,并且不分页视图:定义action方法class ProjectsViewSet(viewsets.ModelViewSet): queryset = Projects.objects.all() serializer_class = ProjectsSerializer filter_backends = [filters.SearchFilter, filters.OrderingFilter, DjangoFi原创 2022-05-19 10:07:09 · 740 阅读 · 8 评论 -
【DRF】*GenericAPIView提供的分页、搜索过滤、搜索排序功能(5.25)
一、搜索过滤采用的方式:使用icontains查询类型作为过滤类型tip:双击shift可以搜索想要找的文件1、setting.py文件REST_FRAMEWORK 中指定搜索引擎类:REST_FRAMEWORK = { #指定搜索引擎类 'DEFAULT_FILTER_BACKENDS':['rest_framework.filters.SearchFilter']}特别注意1:全局配置文件中指定搜索引擎类,所有继承GenericAPIView的类视图中的获取列表数据的接口原创 2022-05-18 07:18:28 · 582 阅读 · 12 评论 -
【DRF】视图集ViewSet和路由(8)
使⽤视图集ViewSet,可以将⼀系列逻辑相关的动作放到⼀个类中:list() 提供⼀组数据retrieve() 提供单个数据create() 创建数据update() 保存数据destory() 删除数据ViewSet视图集类不再实现get()、post()等⽅法,⽽是实现动作 action 如 list() 、create() 等。视图集只在使⽤as_view()⽅法的时候,才会将action动作与具体请求⽅式对应上。如:class NewsChannelViewSet(viewset.原创 2022-05-14 09:42:11 · 506 阅读 · 2 评论 -
【DRF】请求和响应对象(7)
一、请求对象(Request)REST framework 传⼊视图的request对象不再是Django默认的HttpRequest对象,⽽是REST framework提供的扩展了HttpRequest类的Request类的对象。REST framework 提供了Parser解析器,在接收到请求后会⾃动根据Content-Type指明的请求数据类型(如JSON、表单等)将请求数据进⾏parse解析,解析为类字典对象保存到Request对象中。Request对象的数据是⾃动根据前端发送数据的格式进原创 2022-05-14 09:41:42 · 320 阅读 · 0 评论 -
【DRF】DRF视图父类(6)
两个基类一、APIViewrest_framework.views.APIViewAPIView是REST framework提供的所有视图的基类,继承⾃Django的View⽗类。APIView与View的不同之处在于:1、传⼊到视图⽅法中的是REST framework的Request对象,⽽不是Django的HttpRequest对象;2、视图⽅法可以返回REST framework的Response对象,视图会为响应数据设置(render)符合前端要求的格式;3、任何APIExcept原创 2022-05-13 08:11:57 · 294 阅读 · 0 评论 -
【DRF】模型序列化器使用(5)
如果我们想要使⽤序列化器对应的是Django的模型类,DRF为我们提供了ModelSerializer模型类序列化器来帮助我们快速创建⼀个Serializer类。ModelSerializer与常规的Serializer相同,但提供了:基于模型类⾃动⽣成⼀系列字段基于模型类⾃动为Serializer⽣成validators,⽐如unique_together 包含默认的create()和update()的实现一、定义了ModelSerializer类1、__all__from rest_fram原创 2022-05-13 08:08:09 · 372 阅读 · 0 评论 -
【DRF】序列化和反序列化操作(4)
序列化是将后端响应数据转换成JSON数据给客户端(PC端、APP端)一、获取单条数据(序列化)from app1.models import NewsChannelfrom app1.serializer import NewsChannelSerializer#获取模型对象channel_obj=NewsChannel.objects.get(id=1)#创建序列化器对象serializer=NewsChannelSerializer(instance=channel_obj)#获取模型原创 2022-05-12 08:45:28 · 865 阅读 · 0 评论 -
【DRF】定义序列化器类和常用的字段类型和参数选项归纳总结(3)
序列化器的作⽤:进⾏数据的校验对数据对象进⾏转换一、定义⽅法模型类:from django.db import models# Create your models here.class NewsChannel(models.Model): '''新闻频道''' name=models.CharField(max_length=30,unique=True,verbose_name='频道名称') url=models.CharField(default='',n原创 2022-05-11 09:02:04 · 558 阅读 · 2 评论 -
【DRF】使用Django开发REST接口(2)
我们以在Django框架中使⽤的频道- 类别案例来写⼀套⽀持类别数据增删改查的REST API接⼝,来理解REST API的开发。前后端传值都是JSON格式数据。创建视图import jsonfrom django.http import JsonResponse, HttpResponsefrom django.shortcuts import renderfrom django.views.generic.base import View# Create your views here原创 2022-05-11 09:01:00 · 428 阅读 · 0 评论 -
【DRF】DRF框架的介绍和安装、RESTful规范(1)
一、为什么学习DRFDjango的未来与Web开发未来发展趋势紧密相关。Django这种基于MVT开发模式的传统框架,⾮常适合开发基于PC的传统⽹站,因为它同时包括了后端的开发(逻辑层,数据库层) 和前端的开发(如模板语⾔,样式)。然⽽最近⼏年及未来⼏年更流⾏的开发模式肯定是前后端分离, Django也需要做出⾃⼰的改变来适应这种开发模式。现代⽹络应⽤Web APP或⼤型⽹站⼀般是⼀个后台,然后对应各种客户端(IOS, Android, 浏览器)。由于客户端的开发语⾔与后台的开发语⾔经常不⼀样,这时需要原创 2022-05-10 08:26:31 · 1113 阅读 · 4 评论