drf专题

DRF——serializer中获取嵌套评论

drf的serializer获取嵌套评论 获取嵌套评论的关键思路 在处理嵌套评论的序列化时,一个重要的思路是利用字典来存储和管理嵌套关系。在您提供的代码中,descendant_dict 用于存储当前根评论下所有子孙评论的序列化数据。这个字典的键是评论的ID,值是包含评论数据的字典。由于Python字典中的值是引用,而不是值的拷贝,因此当您在循环中向某个评论的 children 列表中添加数据

DRF——pagination分页模块

文章目录 分页继承APIView类用法1.PageNumberPagination2.LimitOffsetPagination3.CursorPagination 继承GenericAPIView派生类用法1.PageNumberPagination2.LimitOffsetPagination3.CursorPagination 分页 在查看数据列表的API中,如果

DRF——router路由,parser解析器

文章目录 路由解析器1.JSONParser2.FormParser3.MultiPartParser4.FileUploadParser 路由 在之前进行drf开发时,对于路由我们一般进行两种配置: 视图继承APIView from django.urls import pathfrom app01 import viewsurlpatterns = [path('

django DRF增删改查

本文在django所有的增删改查样例使用的DRF框架序列化操作,并非是简单的orm操作。 目录 ORM介绍数据库设计原则DRF增删改操作高级查询原生sql处理 ORM介绍 Django ORM(Object-Relational Mapping,对象关系映射)是 Django 框架的一部分,它提供了一种高效的方式来查询和操作数据库,而无需编写原始的 SQL 语句。Django O

drf-jwt登录之后返回用户对象

前言 在登录验证之后,本想返回一个user对象到前端,可是在drf发送response的时候user对象就消失了,查看源码和文档之后才了解,drf默认只会返回token 验证对象返回User class CustomBackend(ModelBackend):"""自定义用户验证"""def authenticate(self, username=None, password=None, **k

drf开发常用工具函数总结(给请求封装通用参数、打印内置属性/方法、动态构建查找条件、yaml读取真正的环境变量、异常处理之自定义异常类和捕捉系统异常)

给请求封装通用参数 使用中间件 中间件可以在请求进入视图之前或响应返回给客户端之前执行代码。你可以创建一个自定义中间件来添加通用参数。 class CommonParamsMiddleware:def __init__(self, get_response):self.get_response = get_responsedef __call__(self, request):request

Django中drf动态过滤查询

Django中drf动态过滤查询 1、page.py 代码: from rest_framework.pagination import PageNumberPaginationclass UserPagination(PageNumberPagination):"""用户分页器"""page_size = 10 # 默认的页面数据数量page_query_param = 'page'

DRF渲染之异常处理

异常处理 【1 】引言 Django REST Framework 这个就是我们常常说的DRF APIView的dispatch方法: 当请求到达视图时,DRF 的 APIView 类会调用 dispatch 方法来处理请求。在 dispatch 方法中,有一个关键的步骤是处理异常。如果在视图类的方法执行过程中出现了异常,DRF 会捕获这个异常,并调用 self.handle_excepti

【三】DRF序列化进阶

序列化器的定义与使用 多表关联序列化 【1】准备工作 # settings.pyDATABASES = {'default': {# 数据库引擎选择使用MySQL'ENGINE': 'django.db.backends.mysql',# 指定数据库名字,需提前创建'NAME': 'books',# 指定数据库用户名'USER': 'root',# 指定数据库用户密码'PASSWORD':

Django REST framework(DRF)是什么?

Django REST framework(DRF)是什么? Django REST framework(简称DRF)是一个强大且灵活的工具包,用于构建Web API。它是基于Django(一个高级Python Web框架)构建的,提供了许多用于构建API的组件和工具,使得开发过程更加快速和简便。 主要特点: 功能丰富:支持ORM(对象关系映射)和非ORM数据源,序列化,分页,过滤,视

DRF视图源码分析

DRF视图源码分析 1 APIView class GenericAPIView(APIView):pass # 10功能class GenericViewSet(xxxx.View-2个功能, GenericAPIView):pass # 5功能能class UserView(GenericViewSet):def get(self,request):pass APIView是drf中

DRF版本组件源码分析

DRF版本组件源码分析 在restful规范中要去,后端的API中需要体现版本。 3.6.1 GET参数传递版本 from rest_framework.versioning import QueryParameterVersioning 单视图应用 多视图应用 # settings.pyREST_FRAMEWORK = {"VERSION_PARAM": "version", #

DRF解析器源码分析

DRF解析器源码分析 1 解析器 解析请求者发来的数据(JSON) 使用 request.data 获取请求体中的数据。 这个 reqeust.data 的数据怎么来的呢?其实在drf内部是由解析器,根据请求者传入的数据格式 + 请求头来进行处理。 drf默认的解析器三个JSONParser, FormParser, MultiPartParser 1.1 JSONParser (*)

DRF限流组件源码分析

DRF限流组件源码分析 开发过程中,如果某个接口不想让用户访问过于频繁,可以使用限流的机制 限流,限制用户访问频率,例如:用户1分钟最多访问100次 或者 短信验证码一天每天可以发送50次, 防止盗刷。 对于匿名用户,使用用户IP作为唯一标识。对于登录用户,使用用户信息主键、用户ID或名称作为唯一标识。 3.5.0 限流组件的两种返回值 返回True,表示当前限流类允许访问,继续执行

DRF中的请求入口分析及request对象分析

DRF中的请求入口分析及request对象分析 django restframework框架是在django的基础上又给我们提供了很多方便的功能,让我们可以更便捷基于django开发restful API 1 drf项目 pip install djangopip install djangorestframework 1.1 核心配置 INSTALLED_APPS = ['djan

DRF认证组件分析

DRF认证组件分析 在开发API过程中,有些功能需要登录才能访问,有些无需登录。drf中的认证组件主要就是用来实现此功能。 0 认证组件的三种返回值 认证成功,返回元组(user, auth)同时赋值给request.user和request.auth 即request.user = user, request.auth = auth 认证失败,抛出异常,返回错误信息 返回None

DRF的接口使用

【一】如何看cbv源码 ​ 需要看源码。 在看python源码的时候 一定要时刻提醒自己面向对象属性方法查找顺序 先从对象自己找再去产生对象的类里面找之后再去父类找 总结: 看源码只要看到了self点一个东西 一定要问你自己当前这个self到底是谁 cbv的源码 : 突破口在urls.py from django.contrib import adminfrom django.urls

DRF JWT认证进阶

JWT认证进阶 【0】准备工作 (1)模型准备 模型准备(继承django的auth_user表) from django.db import modelsfrom django.contrib.auth.models import AbstractUserclass UserInfo(AbstractUser):mobile = models.CharField(max_length=

DRF 三大认证

三大认证使用 【0】准备 (1)APIView源码回顾 APIView不用csrf验证了APIView的request方法不在是以前的request方法,有了很多好用的新方法APIView内部还分别进行了了用户、权限、频率的验证三大认证之后才执行的视图层的方法 (2)模型表创建 from django.db import models# 图书表class Book(models.M

DRF 路由层

路由层 【1】原始路由 (1)正则re_path from django.urls import path, re_pathfrom book import viewsurlpatterns = [re_path(r'book/(?P<pk>\d+)?/?$', views.BookAPIView.as_view(), name='book')] 示例解释 (?P<pk>

DRF: 序列化器、View、APIView、GenericAPIView、Mixin、ViewSet、ModelViewSet的源码解析

前言:还没有整理,后续有时间再整理,目前只是个人思路,文章较乱。 注意路径匹配的“/” 我们的url里面加了“/”,但是用apifox等非浏览器的工具发起请求时没有加“/”,而且还不是get请求,那么这个请求就会被加上“/”且重定向成一个get请求。从而导致返回None且报错。 譬如现在有个视图类: class BookView(APIView):def get(self, reque

DRF ModelSerializer序列化类

ModelSerializer序列化类 【0】准备 模型表创建 from django.db import modelsclass Book(models.Model):name = models.CharField(max_length=64, verbose_name='书名')price = models.DecimalField(max_digits=6, decimal_place

DRF过滤类

DRF过滤类 目录 DRF过滤类OrderingFilter排序SearchFilter过滤第三方过滤`django-filter`自定义过滤类使用 OrderingFilter排序 DRF自带的排序类OrderingFilter 必须是继承 GenericAPIView 的视图类才能调用,继承APIView时不能这么配置 # views.pyfrom rest_fra

DRF——APIView源码解析

DRF——APIView源码解析 APIView源码分析 class task(APIView):直接Ctrl+左键进入APIView直接看里面的as_view()方法 class APIView(View): @classmethoddef as_view(cls, **initkwargs):if isinstance(getattr(cls, 'queryset', None), mo

Django Rest Framework(挑战DRF最全文档致敬武沛齐)

一. 什么是RESTful REST与技术无关,代表的是一种软件架构风格,REST是Representational State Transfer的简称,中文翻译为“表征状态转移”REST从资源的角度类审视整个网络,它将分布在网络中某个节点的资源通过URL进行标识,客户端应用通过URL来获取资源的表征,获得这些表征致使这些应用转变状态REST与技术无关,代表的是一种软件架构风格,REST是Rep