首页 > 其他分享 >DRF----分页、路由、解析器

DRF----分页、路由、解析器

时间:2023-09-06 15:55:04浏览次数:40  
标签:解析器 分页 views ---- path import drf DRF

1.5 django restframework(下)

drf内置了很多便捷的功能,在接下来的课程中会给大家依次讲解下面的内容:

  • 快速上手

  • 请求的封装

  • 版本管理

  • 认证

  • 权限

  • 限流

  • 序列化

  • 视图

  • 条件搜索

  • 分页

  • 路由

  • 解析器

 

 

10. 分页

在查看数据列表的API中,如果 数据量 比较大,肯定不能把所有的数据都展示给用户,而需要通过分页展示。

在drf中为我们提供了一些分页先关类:

BasePagination,分页基类
PageNumberPagination(BasePagination) 支持 /accounts/?page=4&page_size=100 格式的分页
LimitOffsetPagination(BasePagination) 支持 ?offset=100&limit=10 格式的分页
CursorPagination(BasePagination) 支持 上一下 & 下一页 格式的分页(不常用)

10.1 APIView视图

如果编写视图是直接继承APIView,那么在使用分页时,就必须自己手动 实例化 和 调用相关方法。

1.PageNumberPagination

image-20210826165642846

image-20210826165918075

 

2.LimitOffsetPagination

image-20210826170617347

 

3.CursorPagination

image-20210826171203863

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10.2 GenericAPIView派生类

如果是使用 ListModelMixinModelViewSet ,则只需要配置相关类即可,内部会自动执行相关分页的方法。

1.PageNumberPagination
image-20210827003534400
2.LimitOffsetPagination

image-20210827003357244

3.CursorPagination

image-20210827003146430

 

 

 

11. 路由

在之前进行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中提供了更简便的方式:

    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()),
    ]

 

 

 

 

 

 

 

 

 

 

12. 解析器

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

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

1.JSONParser

image-20210827081058194

 

2.FormParser

image-20210827081244795

 

3.MultiPartParser

image-20210827083047327

<!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

image-20210827084403453

 

 

 

解析器可以设置多个,默认解析器:

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相关的知识点就全部讲完了。

  • 你的感受:单独听的时候都明白,现在感觉自己已经忘记了 并且 还不知道怎么组合起来一起使用。

  • 切记:现在千万不要重复回去再看视频,接着往下看学习《drf实战案例》,结合实战功能 & drf各个组件的小项目。

  •  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

标签:解析器,分页,views,----,path,import,drf,DRF
From: https://www.cnblogs.com/youhongliang/p/17682505.html

相关文章

  • 开发笔记-大数据技术栈-spark基础
     Spark是一个快速、通用、可扩展的大数据分析引擎,是集批处理、实时流处理、交互式查询、机器学习与图计算为一体的大数据开源项目。 一、对比MapReduce1.Hadoop中的job处理流程:》从hdfs读取数据》在map阶段,执行mapperfunction,然后split到磁盘》在reduce阶段,从各个map......
  • vxe-table 的 setActiveRow() 无效
    问题vxe-table的setActiveRow(row)方法无效。解决检查之后发现,vxe-column上忘记写:edit-render="{}。因为#edit="{row}"插槽必须要写:edit-render="{}......
  • 多摩川编码器协议理解与自做经历-(2)
    1,前言:上一期介绍了多摩川协议里面的数据介绍,这期我们将使用实物多摩川编码器通过485和逻辑分析仪,来实操了解多摩川协议纸上得来终觉浅,绝知此事要躬行。 我先介绍一下我用到的实物。多摩川编码器,伺服驱动器,梦源逻辑分析仪。通过伺服驱动器,看一下了解多摩川编码器和驱动器的......
  • python 变量
    变量什么是变量?变量就是用来变化的世间万物的状态,简单来说就是给他起一个新的代号或名字例如:身高:160,体重:140​ height=160​ print(height)----输出结果就等于160​ ||等价于​ print(160)--------输出结果也等于160​ weight=140​ print(weight)----输出结果......
  • Tomcat7+ 弱口令 && 后台getshell漏洞
    Tomcat7+弱口令&&后台getshell漏洞环境说明Tomcat支持后台部署war文件,可以直接将webshell部署到web目录下。其中,欲访问后台,需要对应用户有相应权限。Tomcat7+权限分为:manger(后台管理)manger-gui拥有html页面权限manger-status拥有查看status的权限mager-jmx拥有jmx权限......
  • 工程概论开篇
    作业Ⅰ|这个作业属于哪个课程|https://edu.cnblogs.com/campus/jmu/ComputerScience21/||-----------------|---------------||这个作业要求在哪里|https://edu.cnblogs.com/campus/jmu/ComputerScience21/homework/13033||这个作业的目标|<对自身定义.初步使用G......
  • python随记
    解包,print(*(a)) ......
  • 基于高性能Cortex®-M33内核STM32H562RIV6、STM32H562RIT6、STM32H562RGV6 32-bit ARM
    简介STM32H562xx器件是基于高性能ARM®Cortex®-M3332位RISC内核的高性能微控制器系列(STM32H5系列)。它们的工作频率高达250MHz。Cortex®-M33内核具有单精度浮点单元(FPU)、支持所有ARM®单精度数据处理指令和所有数据类型。该系列微控制器具有1至2MB的Flash存储器、640KB的SRA......
  • DRF01---快速上手,请求的封装,版本管理,认证,权限
    1.3djangorestframework(上)djangorestframework(简称drf)本质上其实就是一个别人编写好的app,里面集成了很多编写restfulAPI的功能功能,接下里咱们就来学习drf并用他来开发restfulAPI。drf内置了很多便捷的功能,在接下来的课程中会给大家依次讲解下面的内容:快速上手请求的......
  • 解决大量重复操作浏览器页面的方法
    在工作中,我们会遇到需要在浏览器页面上进行大量重复操作的问题。一、可以通过编写和在浏览器控制台执行脚本解决问题。示例脚本1:$('[id="processFormSubmitNext"]').click();$('[title="结束办理"]').click();$('[id="comment_textarea"]')[0].value="已阅。";......