Django框架深入了解_04(DRF之url控制、解析器、响应器、版本控制、分页)(一)
阅读目录
一、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控制、解析器、响应器、版本控制、分页)(一)相关推荐
- DRF url控制 解析器 响应器 版本控制 分页(常规分页,偏移分页,cursor游标分页)...
url控制 第二种写法(只要继承了ViewSetMixin) url(r'^pub/$',views.Pub.as_view({'get':'list','post':'create'})), #获取 ...
- Django框架深入了解_04(DRF之url控制、解析器、响应器、版本控制、分页)(二)
解析器介绍: 所谓解析器,就是前端传过来的数据,后端可以解析,从request.data中取出来,默认的解析器配置是三种编码格式都可以取 回到顶部 解析器的作用: 根据请求头(content-type ...
- 利用 Python django 框架 输入汉字,数字,字符,等。。转成二维码!
利用 Python django 框架 输入汉字,数字,字符,等..转成二维码! 模块必备:Python环境 + pillow + qrcode 模块 核心代码import qrcodeqr = q ...
- drf 解析器,响应器,路由控制
解析器 作用: 根据请求头 content-type 选择对应的解析器对请求体内容进行处理. 有application/json,x-www-form-urlencoded,form-data等格式使 ...
- Django框架深入了解_03(DRF之认证组件、权限组件、频率组件、token)
阅读目录 一.认证组件 使用方法: token简单描述: 应用token编写登录接口: 二.权限组件 使用方法: 三.频率组件 使用方法: 一.认证组件 回到顶部 使用方法: ①写一个认证类,新建文件 ...
- Django框架深入了解_02(DRF之序列化、反序列化)
阅读目录 序列化:将Python对象准换成json格式的字符串,反之即为反序列化 DRF的序列化使用过程: 使用drf的序列化组件 -1 新建一个序列化类继承Serializer -2 在类中写要序列 ...
- Django框架之CBV类视图及类视图装饰器
前言 这几年一直在it行业里摸爬滚打,一路走来,不少总结了一些python行业里的高频面试,看到大部分初入行的新鲜血液,还在为各样的面试题答案或收录有各种困难问题 于是乎,我自己开发了一款面试宝典,希 ...
- django框架预备知识
内容: 1.web预备知识 2.django介绍 3.web框架的本质及分类 4.django安装与基本设置 1.web预备知识 HTTP协议:https://www.cnblogs.com/wyb6 ...
- 订单支付和评论——基于Django框架的天天生鲜电商网站项目系列博客(十五)
系列文章目录 需求分析--基于Django框架的天天生鲜电商网站项目系列博客(一) 网站框架搭建--基于Django框架的天天生鲜电商网站项目系列博客(二) 用户注册模块--基于Django框架的天天 ...
最新文章
- java怎么建立内部类_语法 - 是否可以在Java静态中创建匿名内部类?
- 实现pv uv统计_程序员修仙之路优雅快速的统计千万级别uv
- Docker入门-构建第一个Java程序
- SpringBoot中@PropertySource和@ImportResource以及@Bean
- 《Python Cookbook 3rd》笔记(1.19):转换并同时计算数据
- shell脚本中常见的几个判断
- 促销海报创意|你想要的秋天(秋季),吸睛大促海报都在这里
- 风控成长之路---必知必会工具与业务
- Python 之 模块和包
- linux -小记(3) 问题:linux 安装epel扩展源报错
- 验证码——ImageIO.write的坑
- 某公司ASP.NET应聘上机试题
- Cadence下载 安装 与 和谐教程
- idea svn回退版本_mac下使用svn通过终端回退版本到某个版本号 - 博客频道 - CSDN.NET...
- 汽车诊断协议 - CAN BUS协议
- 12V继电器开关控制
- LCD12864 液晶显示-汉字及自定义显示(串口)
- 苏宁易购接口api电商数据获取
- 软件设计师——多媒体基础
- VMware vSphere ESXi 6.7/7.0 定制安装盘(驱动或者SLIC)
热门文章
- Mysql视图与数据备份
- MyBatis mapper代理方式
- 计算机操作系统还能这样玩?这一篇计算机操作系统的总结为你保驾护航(零风险、高质量、万字长文、建议收藏)
- Eureka出现No instances available for xxx的五种解决方案(不能解决你骂我)
- 进程和线程的基本概念
- VisualSVN Server Manager创建版本库以及TortoiseSVN的使用
- JavaScript——易班优课YOOC课群在线测试自动答题解决方案(二十一)禁止打开控制台解决方案
- Bicolored RBS
- redhat编译安装git
- Spring-学习笔记08【面向切面编程AOP】