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

2019/7/23 14:33:41 人评论 次浏览 分类:学习教程

阅读目录

一、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’>

相关资讯

    暂无相关的资讯...

共有访客发表了评论 网友评论

验证码: 看不清楚?
    -->