drf之请求和响应
一、drf之请求
【1】源码分析
# Request 类的对象
from rest_framework.request import Request
# 1 新的request
# 2 request.data 前端传入的请求体中得数据,无论那种编码
# 3 用起来跟之前一样
# 4 老的request在request._request
【2】配置视图类能处理的编码格式
# 默认,视图类的方法,可以处理任意编码格式
-urlencoded
-form-data
-json
# 例如有的接口,只接收json格式,其他格式不处理
# 配置方式一,视图类上配置
from rest_framework.parsers import JSONParser, FormParser, MultiPartParser
# JSONParser:json
# FormParser:urlencoded
# MultiPartParser:form-data
class TestView(APIView):
# 只允许json格式
parser_classes = [JSONParser]
def post(self, request):
print(request.data)
return Response('ok')
# 配置方式二:sttings.py 配置在配置文件中,sttings中的是全局配置
REST_FRAMEWORK = {
'DEFAULT_PARSER_CLASSES': [
# 'rest_framework.parsers.JSONParser',
# 'rest_framework.parsers.FormParser',
'rest_framework.parsers.MultiPartParser',
],
}
# 全局使用某种,单某个视图类,局部使用---》优先用视图类配置的---》视图类没配置--》项目配置文件---》项目配置文件如果没配置---》drf配置文件(默认三个都支持)
-配置文件正常写
class TestView(APIView):
parser_classes = [JSONParser,FormParser]
二、drf之响应
【1】源码分析
from rest_framework.response import Response
data=None # 咱们给的字典或列表或字符串---》最终放到了http响应体中返回了
status=None #http响应状态码,默认是200,你可以改,改成from rest_framework import status 状态码 http响应状态码分别代表啥意思:200成功 201 创建成功
template_name=None:用浏览器访问好看的页面--》指定的--》默认使用drf提供的--》后期可以自己写页面,使用
headers=None, #响应头
content_type=None # 响应编码格式
## 你需要记住的
data
status
headers
【2】响应编码格式
# 配置方式跟请求解析类似
# 方式一:在视图类上配置
class TestView(APIView):
renderer_classes = [JSONRenderer,BrowsableAPIRenderer]
# 方式二:配置文件中配置
REST_FRAMEWORK = {
'DEFAULT_RENDERER_CLASSES': [
'rest_framework.renderers.JSONRenderer',
'rest_framework.renderers.BrowsableAPIRenderer',
],
}
# 优先用 视图类的---》项目配置文件---》drf内置的(两个都支持)