一、drf 之请求
1、drf 之请求Request类
视图类继承APIView后多了 -0 去除了csrf认证 -1 新的request -request.data -request.query_params -request.其他跟之前一样 -request._request 是老的 -2 三大认证 -3 全局异常
2、控制前端请求的编码格式
from rest_framework.views import APIView from rest_framework.response import Response from rest_framework.parsers import JSONParser, FormParser, MultiPartParser from rest_framework.renderers import JSONRenderer, BrowsableAPIRenderer # JSONParser:解析json格式 # FormParser:urlencoded # MultiPartParser:form-data
局部限制
写一个类属性 parser_classes = [JSONParser或者FormParser、MultiPartParser]
class BookView(APIView): # 类属性 parser_classes = [JSONParser] def get(self, request): res = Response(data={123}, status=500, headers={'xxx': 'yyy'}) print(res.data) return res def post(self, request): print(self.parser_classes) print(request.data) return Response('新增')
效果:
全局限制
REST_FRAMEWORK = { #####请求体的限制 'DEFAULT_PARSER_CLASSES': [ 'rest_framework.parsers.JSONParser', 'rest_framework.parsers.FormParser', # 'rest_framework.parsers.MultiPartParser' ], #####响应格式的限制 'DEFAULT_RENDERER_CLASSES': [ 'rest_framework.renderers.JSONRenderer', 'rest_framework.renderers.BrowsableAPIRenderer', ], }
补充:
全局使用后,局部再限制---》只需要在视图类上加即可
全局如果用了,局部这样配,优先用局部的,也就是这个类管理的接口,只能接收form-data格式 parser_classes = [MultiPartParser]
二、drf之响应
1、drf之Response对象源码
# from rest_framework.response import Response ### __init__ 中需要传这几个参数,不传也可以 data=None # 字符串,列表,字典----》放在了响应 体 中 ---》第一个参数是它 status=None, # http响应状态码,默认是200,千万不能写成1xx headers=None, # http响应头,后期我们可以往响应头中放数据 content_type=None # 响应编码格式(不用管,用浏览器访问就是:text/html,用postman就是:json格式) template_name=None # 模版名字 默认是:rest_framework/api.html 了解,可以定制自己返回的页面样子 ###补充:后面会用---》通过res.data 就能取到当时放的datga res=Response(data={},status=500,headers={'xxx':'yyy'}) print(res.data) return res ### 补充:取当时放的响应头 res.headers 拿不到数据,可以通过下面的方式或得到 print(res['xxx']) print(res.has_header('zzz'))
2、drf之响应格式
响应有编码格式:默认支持json和text/html(浏览器)
# 修改只支持json ### 局部使用 class BookView(APIView): renderer_classes = [BrowsableAPIRenderer] ### 全局使用 REST_FRAMEWORK = { 'DEFAULT_RENDERER_CLASSES': [ 'rest_framework.renderers.JSONRenderer', 'rest_framework.renderers.BrowsableAPIRenderer', ], } ##局部禁用---》全局已经配置了---》局部想用浏览器的样子 class BookView(APIView): renderer_classes = [BrowsableAPIRenderer] # 如果不配置---》有默认 -解析:三种编码都能解析 -响应:浏览器访问看到浏览器的样子,postman访问,看到json格式
三、
标签:GenericAPIView,响应,res,request,rest,framework,视图,data,drf From: https://www.cnblogs.com/dgp-zjz/p/17677312.html