阅读目录

一、url控制

  • 基本路由写法:最常用
  • 第二种写法:继承ModelViewSet
  • 第三种写法:(自动生成路由,必须继承ModelViewSet)

二、解析器

  • 前端不同的数据格式请求,后端解析得到的结果:

  • 解析器介绍:

  • 解析器的作用:

  • 解析器的使用:

三、响应器:

  • 响应器的作用:

  • 响应器的使用:

  • 响应器的内置渲染器:

四、版本控制

  • 全局使用:

  • 局部使用:

五、DRF分页器

  • 常规分页

  • 偏移分页

  • 补充:get_paginated_response的使用

  • cursor游标分页

一、url控制

回到顶部
基本路由写法:最常用

--------------------------------------------------------------------
注:如果你对python感兴趣,我这有个学习Python基地,里面有很多学习资料,感兴趣的+Q群:895817687
--------------------------------------------------------------------from django.conf.urls import url
from django.contrib import admin
from app01 import viewsurlpatterns = [url(r'^admin/', admin.site.urls),url(r'^books/', views.Books.as_view()),url(r'^book/', views.Book.as_view()),url(r'^login/', views.Login.as_view()),
]

第二种写法:继承ModelViewSet

基于mixins来封装的视图就是使用了继承ModelViewSet,然后改写路由:

from django.conf.urls import url
from app01 import views
urlpatterns = [url(r'^publish/$', views.PublishView.as_view({'get':'list','post':'create'})),url(r'^publish/(?P<pk>\d+)/$', views.PublishView.as_view({'get':'retrieve','put':'update','delete':'destroy'})),
]

第三种写法:(自动生成路由,必须继承ModelViewSet)

#SimpleRouter 自动生成两条路由
实现过程:

tips:使用python的manage.py的shell环境进行快速添加数据用于测试:

pycharm>>Terminal:

python3 manage.py shell
>>> from app01 import models
>>> models.Publish.objects.create(name='北方出版社',addr='北京')
<Publish: Publish object>
>>> models.Publish.objects.create(name='长江出版社',addr='湖北')
<Publish: Publish object>
>>> models.Publish.objects.create(name='东方出版社',addr='唐朝')
<Publish: Publish object>

views.py代码

from django.shortcuts import render
from rest_framework.response import Response# Create your views here.
from app01 import models
from app01.MySer import PublishSer
from rest_framework.viewsets import ModelViewSetclass PublishDetails(ModelViewSet):queryset = models.Publish.objects.all()serializer_class = PublishSer

urls.py代码

from django.conf.urls import url, include
from django.contrib import admin
from app01 import viewsfrom rest_framework.routers import SimpleRouter,DefaultRouter
router = SimpleRouter()
router.register('publish', views.PublishDetails)urlpatterns = [url(r'^admin/', admin.site.urls),url(r'', include(router.urls)),
]

MySer序列化类文件

from rest_framework import serializers
from app01 import models
class PublishSer(serializers.ModelSerializer):class Meta:model = models.Publishfields = "__all__"

models.py文件

from django.db import models# Create your models here.
class Publish(models.Model):name = models.CharField(max_length=32)addr = models.CharField(max_length=64)

测试,输入一个错误的路由,查看自动生成2条路由:
#DefaultRouter 自动生成四条路由

二、解析器

回到顶部
前端不同的数据格式请求,后端解析得到的结果:
json格式:
前端:(使用postman发送请求,json格式)

后端:(打印request.data数据)

form-data格式:

urlencoded格式:


小结:可以看出

json格式数据发送,后端解析出来的数据为:<class ‘dict’>

form-data和urlencoded格式数据发送,后端解析出来的数据为:QueryDict对象,<class ‘django.http.request.QueryDict’>

Django框架深入了解_04(DRF之url控制、解析器、响应器、版本控制、分页)(一)相关推荐

  1. DRF url控制 解析器 响应器 版本控制 分页(常规分页,偏移分页,cursor游标分页)...

    url控制 第二种写法(只要继承了ViewSetMixin) url(r'^pub/$',views.Pub.as_view({'get':'list','post':'create'})), #获取 ...

  2. Django框架深入了解_04(DRF之url控制、解析器、响应器、版本控制、分页)(二)

    解析器介绍: 所谓解析器,就是前端传过来的数据,后端可以解析,从request.data中取出来,默认的解析器配置是三种编码格式都可以取 回到顶部 解析器的作用: 根据请求头(content-type ...

  3. 利用 Python django 框架 输入汉字,数字,字符,等。。转成二维码!

    利用 Python django 框架 输入汉字,数字,字符,等..转成二维码! 模块必备:Python环境 + pillow  + qrcode 模块 核心代码import qrcodeqr = q ...

  4. drf 解析器,响应器,路由控制

    解析器 作用: 根据请求头 content-type 选择对应的解析器对请求体内容进行处理. 有application/json,x-www-form-urlencoded,form-data等格式使 ...

  5. Django框架深入了解_03(DRF之认证组件、权限组件、频率组件、token)

    阅读目录 一.认证组件 使用方法: token简单描述: 应用token编写登录接口: 二.权限组件 使用方法: 三.频率组件 使用方法: 一.认证组件 回到顶部 使用方法: ①写一个认证类,新建文件 ...

  6. Django框架深入了解_02(DRF之序列化、反序列化)

    阅读目录 序列化:将Python对象准换成json格式的字符串,反之即为反序列化 DRF的序列化使用过程: 使用drf的序列化组件 -1 新建一个序列化类继承Serializer -2 在类中写要序列 ...

  7. Django框架之CBV类视图及类视图装饰器

    前言 这几年一直在it行业里摸爬滚打,一路走来,不少总结了一些python行业里的高频面试,看到大部分初入行的新鲜血液,还在为各样的面试题答案或收录有各种困难问题 于是乎,我自己开发了一款面试宝典,希 ...

  8. django框架预备知识

    内容: 1.web预备知识 2.django介绍 3.web框架的本质及分类 4.django安装与基本设置 1.web预备知识 HTTP协议:https://www.cnblogs.com/wyb6 ...

  9. 订单支付和评论——基于Django框架的天天生鲜电商网站项目系列博客(十五)

    系列文章目录 需求分析--基于Django框架的天天生鲜电商网站项目系列博客(一) 网站框架搭建--基于Django框架的天天生鲜电商网站项目系列博客(二) 用户注册模块--基于Django框架的天天 ...

最新文章

  1. java怎么建立内部类_语法 - 是否可以在Java静态中创建匿名内部类?
  2. 实现pv uv统计_程序员修仙之路优雅快速的统计千万级别uv
  3. Docker入门-构建第一个Java程序
  4. SpringBoot中@PropertySource和@ImportResource以及@Bean
  5. 《Python Cookbook 3rd》笔记(1.19):转换并同时计算数据
  6. shell脚本中常见的几个判断
  7. 促销海报创意|你想要的秋天(秋季),吸睛大促海报都在这里
  8. 风控成长之路---必知必会工具与业务
  9. Python 之 模块和包
  10. linux -小记(3) 问题:linux 安装epel扩展源报错
  11. 验证码——ImageIO.write的坑
  12. 某公司ASP.NET应聘上机试题
  13. Cadence下载 安装 与 和谐教程
  14. idea svn回退版本_mac下使用svn通过终端回退版本到某个版本号 - 博客频道 - CSDN.NET...
  15. 汽车诊断协议 - CAN BUS协议
  16. 12V继电器开关控制
  17. LCD12864 液晶显示-汉字及自定义显示(串口)
  18. 苏宁易购接口api电商数据获取
  19. 软件设计师——多媒体基础
  20. VMware vSphere ESXi 6.7/7.0 定制安装盘(驱动或者SLIC)

热门文章

  1. Mysql视图与数据备份
  2. MyBatis mapper代理方式
  3. 计算机操作系统还能这样玩?这一篇计算机操作系统的总结为你保驾护航(零风险、高质量、万字长文、建议收藏)
  4. Eureka出现No instances available for xxx的五种解决方案(不能解决你骂我)
  5. 进程和线程的基本概念
  6. VisualSVN Server Manager创建版本库以及TortoiseSVN的使用
  7. JavaScript——易班优课YOOC课群在线测试自动答题解决方案(二十一)禁止打开控制台解决方案
  8. Bicolored RBS
  9. redhat编译安装git
  10. Spring-学习笔记08【面向切面编程AOP】