drf 视图组件

内容概要

  • request 对象和 response 对象
  • GenericAPIView 介绍
  • 基于 GenericAPIView 的 5个视图扩展类
  • GenericAPIView 的9个视图子类
  • 视图集
  • ModelViewSet 的使用 ViewSetMixin 源码分析

内容详细

request 对象和 response 对象

请求之 request 对象

我们已经知道,drf 对原生的 request 请求数据对象做过封装处理,原生 request 对象被保存在 _request 中,通过 __getattr__【点拦截】魔法方法可以获取 原生 request 对象所有方法和属性,并且 drf 的 request 可以通过 request.data 取出包括 json 格式数据在内的所有编码格式,使得数据处理更加方便。

导入模块 Request

from rest_framework.request import Request

request 对象需要记忆:

  • __getattr__
  • request.data
  • request.query_parmas

request.query_parmas 源码:接受原生 request 对象的 GET 请求的数据,也就是过滤参数

@property
def query_params(self):
"""
    More semantically correct name for request.GET.

"""
    return self._request.GET

限制 request 能接收的数据格式

局部配置:

在视图层的视图类中配置,限制 request 对象只能处理 json格式数据,只针对当前视图类有效

from rest_framework.parsers import JSONParser,FormParser,MultiPartParser

class PublishView(APIView):
    # 局部使用,只针对当前视图类有效,只想处理json格式
    parser_classes = [JSONParser]

    def get(self, request):
        pass

全局配置:

在项目文件夹下的 settings.py文件中配置

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

解析顺序:
视图层类中的配置 > 项目文件夹下 settings.py 文件配置 > drf 原有的默认配置

drf的默认配置: from rest_framework import settings

drf 视图组件

响应之 response 对象

from rest_framework.response import Response

形参:

`python
data=None, # 字符串,字典,列表–》给http响应body体中内容–>response对象中取出处理
status=None, # 响应状态码:1xx,2xx,3xx,默认是200
from rest_framework.status import HTTP_201_CREATED
Response(ser.data,status=HTTP_201_CREATED)

headers=None, # 响应头 字典

Original: https://www.cnblogs.com/elijah-li/p/16094982.html
Author: elijah_li
Title: drf 视图组件

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/500128/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球