drf之请求和响应

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内置的(两个都支持)
posted @ 2024-05-15 16:58  Formerly0^0  阅读(15)  评论(0)    收藏  举报