专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

Rest-framework专栏讲解(九):Parsers

39_1.png


点击跳转到 Rest-Framework 专栏目录

配置响应数据格式

在使用 restframework 框架的时候我们需要设置返回的数据为 JSON 格式就需要在 Django 项目的 settings.py 中做如下配置:

REST_FRAMEWORK = {
    'DEFAULT_PARSER_CLASSES': [
        'rest_framework.parsers.JSONParser',
    ]
}

或者是你在单个试图中这样配置:

from rest_framework.parsers import JSONParser
from rest_framework.response import Response
from rest_framework.views import APIView

class ExampleView(APIView):
    """
    A view that can accept POST requests with JSON content.
    """
    parser_classes = [JSONParser]

    def post(self, request, format=None):
        return Response({'received data': request.data})

再或者你使用装饰器的方式, 就可以这样进行数据配置:

from rest_framework.decorators import api_view
from rest_framework.decorators import parser_classes
from rest_framework.parsers import JSONParser

@api_view(['POST'])
@parser_classes([JSONParser])
def example_view(request, format=None):
    """
    A view that can accept POST requests with JSON content.
    """
    return Response({'received data': request.data})

数据类型封装类参考

数据类 .media_type 类型 说明
JSONParser application/json 解析 JSON 请求
FormParser application/x-www-form-urlencoded 解析 HTML 表单内容, 通常情况你会将他和 MultiPartParser 一起使用, 以便于视图能完全支持表单提交数据
MultiPartParser multipart/form-data 通常和 FormParser 一起使用, 完全支持表单提交数据
FileUploadParser */* 上传文件的视图解析数据, 如果你在 URL 指定关键字参数 filename 则会使用该对象明明上传文件, 否则需要在 headers 指定 Content-Disposition 属性值

FileUploadParser 将会遵守 Django 标准的 FILE_UPLOAD_HANDLERS 设置和 request.upload_handlers 属性, 所以在使用的的时候你可以这样:

# views.py
class FileUploadView(views.APIView):
    parser_classes = [FileUploadParser]

    def put(self, request, filename, format=None):
        file_obj = request.data['file']
        # ...
        # do some stuff with uploaded file
        # ...
        return Response(status=204)

# urls.py
urlpatterns = [
    # ...
    url(r'^upload/(?P<filename>[^/]+)$', FileUploadView.as_view())
]

第三方组件

YAML 支持

python3 -m pip install djangorestframework-yaml

此时数据以 YAML 语法作为支持和返回, 需要你在 settings.py 中做如下配置:

REST_FRAMEWORK = {
    'DEFAULT_PARSER_CLASSES': [
        'rest_framework_yaml.parsers.YAMLParser',
    ],
    'DEFAULT_RENDERER_CLASSES': [
        'rest_framework_yaml.renderers.YAMLRenderer',
    ],
}

XML 支持

python3 -m pip install djangorestframework-xml

此时数据以 XML 语法作为支持和返回, 需要你在 settings.py 中做如下配置:

REST_FRAMEWORK = {
    'DEFAULT_PARSER_CLASSES': [
        'rest_framework_xml.parsers.XMLParser',
    ],
    'DEFAULT_RENDERER_CLASSES': [
        'rest_framework_xml.renderers.XMLRenderer',
    ],
}

未经允许不得转载:搜云库技术团队 » Rest-framework专栏讲解(九):Parsers

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们