Java教程

drf视图组件

本文主要是介绍drf视图组件,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

请求与响应

请求

# Request 类的对象---》新的request对象
from rest_framework.request import Request
# 记住的
    __getattr__
    request.data
  request.query_parmas--->self._request.GET-->restful规范里,请求地址中带过滤(查询)条件---》get请求地址中提交的数据在GET中,---》query_parmas:查询参数
  

# 了解--->默认情况下,可以解析 urlencoded,formdata,json
    -如果我们写了一个接口,想只能处理json格式,或者只能处理formdata
    
  
  
# 局部配置
from rest_framework.parsers import JSONParser,FormParser,MultiPartParser
class PublishView(APIView):
    # 局部使用,只针对当前视图类有效,只想处理json格式
    parser_classes = [JSONParser]

# 全局配置---》配置文件--->所有接口都只能解析json格式
REST_FRAMEWORK = {
    'DEFAULT_PARSER_CLASSES': [
        'rest_framework.parsers.JSONParser',
    ],
}

# 全局配置解析json,局部某个视图函数想能解析formdata格式

视图类中配置一下即可---》局部配置

-如果局部配置如下,会怎么样
parser_classes = [] # 所有格式都补不能解析了

# 使用顺序:我们没有配置,也有默认配置:3个都能解析
    drf有默认配置(最后)----》项目配置文件的配置(其次)----》视图类中配的(优先用)
  drf的默认配置:from rest_framework import settings
  
  
  
  
 # 总结:一般情况下,都使用默认即可,不用配置

响应

Respone:from rest_framework.response import Response

# 属性
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,      # 响应头 字典
  
---了解---
template_name=None,  # 模板名字(不用),用浏览器访问时,可以改
exception=False,    # 异常处理
content_type=None   # 响应编码格式



# 响应格式---》跟解析格式

# 局部设置
from rest_framework.renderers import JSONRenderer,BrowsableAPIRenderer
class BookDetailView(APIView):
    renderer_classes = [JSONRenderer,]
# 全局设置
REST_FRAMEWORK = {
    'DEFAULT_RENDERER_CLASSES': (  # 默认响应渲染类
        'rest_framework.renderers.JSONRenderer',  # json渲染器
        'rest_framework.renderers.BrowsableAPIRenderer',  # 浏览API渲染器
    )
}

视图组件

# APIView  
    from rest_framework.views import APIView
  -类属性
      -renderer_classes,parser_classes。。。
  -get方法,post方法,delete方法写法跟之前的View一样,只不过request对象变成了新的request丢下
  -比之前的View多了三大认证和全局异常处理
  
  
# GenericAPIView  继承了APIView  ,多了属性和方法
    from rest_framework.generics import GenericAPIView
  -属性(先记两个)
      -queryset = None
    -serializer_class = None
  -方法
      -get_queryset
    -get_object
    -get_serializer
    
    
    
# 5个视图扩展类(不是视图类,没有集成APIView,需要配合GenericAPIView)
  from rest_framework.mixins
  CreateModelMixin,
  ListModelMixin,
  DestroyModelMixin,
  RetrieveModelMixin,
  UpdateModelMixin
  
  
  
# 9个视图子类 
  from rest_framework.generics 
  CreateAPIView,
  ListAPIView,
  DestroyAPIView,
  RetrieveAPIView,
  UpdateAPIView
  ListCreateAPIView,
  RetrieveUpdateAPIView,
  RetrieveUpdateDestroyAPIView,
  RetrieveDestroyAPIView

# 视图集
    from rest_framework.viewsets 
  # 两个视图类
  ModelViewSet,ReadOnlyModelViewSet
  # 视图类
  ViewSet,GenericViewSet,
  # 魔法类
  ViewSetMixin

 

这篇关于drf视图组件的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!