restframework 解析器url控制组件

Posted wt7018

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了restframework 解析器url控制组件相关的知识,希望对你有一定的参考价值。

一、解析器

1、分类

from rest_framework.parsers import JSONParser, FormParser, FileUploadParser, MultiPartParser

a、JSONParser

解析JSON数据类型

b、FormParser

解析urlencode数据类型

c、MultiPartParser

解析form-data数据类型

d、FileUploadParser

解析上传的文件

2、默认的解析器

DEFAULT_PARSER_CLASSES: [
        rest_framework.parsers.JSONParser,
        rest_framework.parsers.FormParser,
        rest_framework.parsers.MultiPartParser
    ]

3、重写parser_classes

在视图类中添加

parser_classes = [JSONParser]

二、url控制

1、产生原因

restframework视图组件,通过含参的as_view()解决了两个get的问题,实现了视图类的同一,但url仍然有两条

2、解决方式

a、原来

    path(author/, views.AuthorViewSet.as_view(get: list, post: create)),
    path(author/<pk>/, views.AuthorViewSet.as_view(get: retrieve, put: update, delete: destroy)),

b、优化

from rest_framework import routers
router = routers.DefaultRouter()
router.register(author, views.AuthorViewSet)

二级分发

path(‘‘, include(router.urls)),

3、路径

^author/$ [name=author-list]
^author\.(?P<format>[a-z0-9]+)/?$ [name=author-list]
^author/(?P<pk>[^/.]+)/$ [name=author-detail]
^author/(?P<pk>[^/.]+)\.(?P<format>[a-z0-9]+)/?$ [name=author-detail]

补充

a、?format=json

http://127.0.0.1:8000/author/?format=json

作用:获取json格式的数据,没有其它装饰

b、.json

http://127.0.0.1:8000/author.json

作用:获取全部json数据

http://127.0.0.1:8000/author/6.json

作用:获取指定pk的json数据

 

以上是关于restframework 解析器url控制组件的主要内容,如果未能解决你的问题,请参考以下文章

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

RestFramework

[Python自学] restframework (解析器)

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

REST framwork之解析器

Django Rest Framework组件:解析器JSONParserFormParserMultiPartParserFileUploadParser