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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值