阅读目录
一、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 views
urlpatterns = [
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 ModelViewSet
class 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 views
from 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.Publish
fields = "__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’>