drf——请求与响应
drf之——请求
1).data request.data 返回解析之后的请求体数据。类似于Django中标准的request.POST和 request.FILES属性,但提供如下特性: 包含了解析之后的文件和非文件数据 包含了对POST、PUT、PATCH请求方式解析后的数据 利用了REST framework的parsers解析器,不仅支持表单类型数据,也支持JSON数据 2).query_params request.query_params与Django标准的request.GET相同,只是更换了更正确的名称而已 3) 其他的属性用起来跟之前一样
请求限制支持的编码格式
请求支持以下三种格式,我们要将其限制
# urlencoded # form-data # json
需要导入以下模块:
from rest_framework.parsers import JSONParser, FormParser, MultiPartParser
限制方式一:在视图类上写
在parser_classes
中做限制:
class BookView(APIView): parser_classes = [JSONParser, FormParser, MultiPartParser] def post(self, request): print(request.data) return Response('ok')
限制方式:将想要限制的编码格式从列表移除 特点:只对局部视图类有效
限制方式二:在配置文件中写
在配置文件中书写:
# drf的配置,统一写成它 REST_FRAMEWORK = { 'DEFAULT_PARSER_CLASSES': [ 'rest_framework.parsers.JSONParser', # 'rest_framework.parsers.FormParser', # 'rest_framework.parsers.MultiPartParser', ], }
限制方式:将想要限制的编码格式注释掉 特点:全局有效
如果全局配置过了,局部想要进一步限制,只需要在局部书写限制方式一即可
总结:能够处理的请求方式编码
-优先从视图类中找 -再去项目配置文件找 -再去drf默认的配置中找
drf之——响应
# return Response({code:100}) -data:响应体的内容,可以字符串,字典,列表 -status:http响应状态码 -drf把所有响应码都定义成了一个常量 template_name:模板名字,用浏览器访问,看到好看的页面,用postman访问,返回正常数据 -自定制页面 -根本不用 headers:响应头加数据 -headers={'name':'kevin'} content_type:响应编码,一般不用
响应限制支持的编码格式
类似请求限制,共有两种模块
# JSONRenderer # BrowsableAPIRenderer
首先需要导入模块:
from rest_framework.renderers import JSONRenderer,BrowsableAPIRenderer
限制方式一:在视图类上写
class BookView(APIView): renderer_classes = [JSONRenderer,BrowsableAPIRenderer]
限制方式:将想要限制的编码格式从列表移除 特点:只对局部视图类有效
限制方式二:在配置文件中写
# drf的配置,统一写成它 REST_FRAMEWORK = { 'DEFAULT_RENDERER_CLASSES': [ 'rest_framework.renderers.JSONRenderer', # 'rest_framework.renderers.BrowsableAPIRenderer', ], }
限制方式:将想要限制的编码格式注释掉 特点:全局有效
如果全局配置过了,局部想要进一步限制,只需要在局部书写限制方式一即可