DRF——router路由,parser解析器

news2024/11/15 9:04:36

文章目录

      • 路由
      • 解析器
        • 1.JSONParser
        • 2.FormParser
        • 3.MultiPartParser
        • 4.FileUploadParser

路由

在之前进行drf开发时,对于路由我们一般进行两种配置:

  • 视图继承APIView

    from django.urls import path
    from app01 import views
    
    urlpatterns = [
        path('api/users/', views.UserView.as_view()),
    ]
    
  • 视图继承 ViewSetMixin(GenericViewSet、ModelViewSet)

    from django.urls import path, re_path, include
    from app01 import views
    
    urlpatterns = [
        path('api/users/', views.UserView.as_view({"get":"list","post":"create"})),
        path('api/users/<int:pk>/', views.UserView.as_view({"get":"retrieve","put":"update","patch":"partial_update","delete":"destory"})),
    ]
    

    对于这种形式的路由,drf中提供了更简便的方式:

    可以使用rest_framework中的router来简化视图函数继承GenericViewSet或者ModelViewSet是的路由分发

    from rest_framework import routers
    from app01 import views
    
    router = routers.SimpleRouter()
    router.register(r'api/users', views.UserView)
    
    urlpatterns = [
        # 其他URL
        # path('xxxx/', xxxx.as_view()),
    ]
    
    urlpatterns += router.urls
    

    也可以利用include,给URL加前缀:

    from django.urls import path, include
    from rest_framework import routers
    from app01 import views
    
    router = routers.SimpleRouter()
    router.register(r'users', views.UserView)
    
    urlpatterns = [
        path('api/', include((router.urls, 'app_name'), namespace='instance_name')),
        # 其他URL
        # path('forgot-password/', ForgotPasswordFormView.as_view()),
    ]
    

解析器

之前使用 request.data 获取请求体中的数据。

这个 reqeust.data 的数据怎么来的呢?其实在drf内部是由解析器,根据请求者传入的数据格式 + 请求头来进行处理。

1.JSONParser

在这里插入图片描述

2.FormParser

在这里插入图片描述

3.MultiPartParser

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="http://127.0.0.1:8000/test/" method="post" enctype="multipart/form-data">
    <input type="text" name="user" />
    <input type="file" name="img">

    <input type="submit" value="提交">

</form>
</body>
</html>
4.FileUploadParser

在这里插入图片描述

解析器可以设置多个:

from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework.parsers import MultiPartParser, JSONParser, FormParser


class UserView(APIView):

    def post(self, request):
        print(request.content_type)
        print(request.data)

        return Response("...")

drf默认使用3个解析器:

'rest_framework.parsers.JSONParser',
'rest_framework.parsers.FormParser',
'rest_framework.parsers.MultiPartParser'

若有错误与不足请指出,关注DPT一起进步吧!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2070737.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

趣味算法------尾部零的个数(C语言,python双重解法)

目录 题目描述&#xff1a; 解题思路&#xff1a; 具体代码&#xff1a; 注意&#xff1a; 题目描述&#xff1a; 给出数字 n(0<n<1000000)&#xff0c;计算出 n 阶乘尾部零的个数。 输入输出格式 输入格式 一个整数。 输出格式 一个整数。 输入输出样例 输入 11 输…

技术分享-商城篇-用户订单管理(十五)

前言 在前面的文章中&#xff0c;我们详细阐述了商品模块、购物模块、支付模块等B2B2C&#xff08;Business-to-Business-to-Consumer&#xff09;电商中核心基础模块&#xff0c;接下来我们来聊一下基础模块中最后一个环节订单模块&#xff0c;订单模块属于购物体系闭环内容&…

C语言典型例题50

《C程序设计教程&#xff08;第四版&#xff09;——谭浩强》 例题4.2 使用do……while语句循环求1234……100&#xff1b; 代码&#xff1a; //《C程序设计教程&#xff08;第四版&#xff09;——谭浩强》 //例题4.2 使用do……while语句循环求1234……100&#xff1b;#incl…

Axure RP实战:打造高效滑块验证码

Axure RP在验证码设计中的应用(滑块拖动) 前言 在数字化时代&#xff0c;验证码已成为保护用户账户安全和防止恶意攻击的重要工具。 它不仅提高了系统的安全性&#xff0c;还增加了用户对平台的信任度。 然而&#xff0c;验证码的设计并非易事&#xff0c;它需要在安全性和…

适用于 Windows 10 的最佳数据恢复免费软件是什么?

有没有适用于 Windows 10 的真正数据恢复免费软件&#xff1f;这篇文章将讨论这个话题&#xff0c;并分享什么是适用于 Windows 10/11/8.1/8/7/Vista/XP 的最佳数据恢复工具。 有没有适用于 Windows 10 的真正免费的数据恢复软件&#xff1f; 丢失重要数据&#xff0c;无论是由…

C++调用Python和numpy第三方库计算MFCC音频特征实现封装发布

文章目录 项目简介环境准备执行步骤1.新建python虚拟环境2.虚拟环境运行下python代码3.迁移虚拟环境4.编写Cmakelists.txt5.编写C代码6.编译项目7.测试 项目简介 深度学习程序的边缘部署以性能绝佳的C为主(⊙﹏⊙)&#xff0c;但遇到项目开发周期短&#xff0c;则以功能优先&am…

五、Centos7-安装Jenkins--吃灰去吧

克隆了一个base的虚拟机&#xff0c;用来安装Jenkins 2023年11月&#xff0c;Jenkins不支持centos7了。我们只是学习用&#xff0c;先看看吧。 &#xff08; 另一个人用别的操作系统安装的jenkins&#xff0c;可以参考 版权声明&#xff1a;本文为博主原创文章&#xff0c;…

mq可靠性

为了解决阻塞可以采用数据持久化 交换机持久化-可以在配置的时候配置durable 队列持久化-mq在设置时默认就是持久化&#xff0c;spring默认也是持久化 消息持久化&#xff0c;不是默认&#xff0c;需要在发送时对delivery_mode改为2&#xff08;持久&#xff09;&#xff0c;默…

系统架构师(每日一练23)

每日一练 1.软件活动主要包括软件描述、()、软件有效性验证和()&#xff0c;()定义了软件功能及使用限制。答案与解析 问题1 A.软件模型 B.软件需求 C.软件分析 D.软件开发 问题2 A.软件分析 B.软件测试 C.软件演化 D.软件开发 问题3 A.软件分析 B.软件测试 C.软件描述 D.软…

事件监听查看、监听器删除方法

前言 最近在开发过程中遇上了不知在哪加入的点击事件&#xff0c;导致页面跳转发生问题&#xff0c;需要找到该点击事件并将其取消掉。以下就是在完成该目标过程中使用、尝试的方法。 1、事件查看 使用网页开发者工具&#xff08;F12&#xff09;选取想查看的元素找到工具中…

03_React 收集表单数据和 组件生命周期

React 收集表单数据和 组件生命周期 一、收集表单数据1、例子1.1 需求&#xff1a;定义一个包含表单的组件&#xff0c;输入用户名密码后&#xff0c;点击登录提示输入信息 2、理解&#xff1a;包含表单的组件分类2.1 受控组件2.2 非受控组件 二、高阶函数\_函数柯里化1、复习-…

MATLAB 手动实现点云投影滤波器 (76)

点云投影到邻近的精确拟合平面,减少噪声点,此为投影滤波器 MATLAB 手动实现点云投影滤波器(76) 一、投影滤波器简介二、实现步骤二、算法实现1.代码2.效果这里用到的投影方法和平面拟合方法以及生成平面方法都在以往文章有所实现,有兴趣可参考: MATLAB点云处理总目录 一…

Paimon Flink本地读取数据报错

1.idea本地读取paimon 用idea在本地读取paimon的表时需要添加的依赖除了官网提出的和hadoop相关的&#xff0c;paimon-flink之类相关的除外还需要其他额外依赖 import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; import org.apache.flink.tabl…

大模型从入门到精通——词向量及知识库介绍

词向量及知识库介绍 1.词向量 1.1 什么是词向量 词向量是一种将单词表示为实数向量的方式。每个单词通过一个高维向量来表示&#xff0c;向量的每一维都是一个实数&#xff0c;这些向量通常位于一个高维空间中。词向量的目标是将语义相似的单词映射到相邻的向量空间中&#…

【STM32 HAL】多串口printf重定向

【STM32 HAL】多串口printf重定向 前言单串口printf重定向原理实现CubeMX配置Keil5配置 多串口printf重定向 前言 在近期项目中&#xff0c;作者需要 STM32 同时向上位机和手机发送数据&#xff0c;传统的 printf 重定向只能输出到一个串口。本文介绍如何实现 printf 同时输出…

回归预测|基于北方苍鹰优化混合核极限学习机的数据预测Matlab程序NGO-HKELM 多特征输入单输出

回归预测|基于北方苍鹰优化混合核极限学习机的数据预测Matlab程序NGO-HKELM 多特征输入单输出 文章目录 前言回归预测|基于北方苍鹰优化混合核极限学习机的数据预测Matlab程序NGO-HKELM 多特征输入单输出 一、NGO-HKELM 模型1. NGO&#xff08;北方苍鹰优化算法&#xff09;2. …

DRF——pagination分页模块

文章目录 分页继承APIView类用法1.PageNumberPagination2.LimitOffsetPagination3.CursorPagination 继承GenericAPIView派生类用法1.PageNumberPagination2.LimitOffsetPagination3.CursorPagination 分页 在查看数据列表的API中&#xff0c;如果 数据量 比较大&#xff0c;肯…

RSA非对称性加密02: 加密redis的连接密码(下)

全文目录,一步到位 1.前言简介1.1 专栏传送门1.1.2 上文传送门 2. 使用方式2.1 使用druid自带的RSA加密工具2.1.1 引入druid依赖2.1.2 原yml配置(对比使用)2.1.2 新yml配置 2.2 springboot的redis配置类2.2.1 例如在RedisConfig中2.2.2 设置序列化与反序列化代码示例如下: 2.3 …

初始redis:Zset有序集合

Set作为集合&#xff0c;有两个特点&#xff1a;唯一且无序。 Zset是有序集合&#xff0c;在保证唯一的情况下&#xff0c;是根据什么来排序的呢&#xff1f;排序的规则是什么&#xff1f; Zset中的member引入了一个属性&#xff0c;分数&#xff08;score&#xff09;&#…

写SCI能用上的AI论文写作工具!码住!

01 Quillbot 提供改写、语法检查、抄袭检测、摘要生成、引文生成等功能。它可以在各种喜欢的网站上使用&#xff0c;帮助用户轻松提高写作效率和质量。 02梅子AI论文 1智能AI论文神器-查重率10%左右-参考文献致谢模板查重报告一键打包 无限免费生成千字论文大纲-在线快速生成…