2020年11月5日星期四

drf—— drf的请求与响应

一、Request

#常用属性 -data :前端以post请求提交的数据都在它中 -FILES :前端提交的文件 -query_params:就是原来的request.GET -重写了 __getattr__  -使用新的request.method其实取得就是原生request.method(通过反射实现)

二、Response

1.全局&局部配置模板的显示方式

rest_framework.response.Response# 通过配置,选择默认模板的显示形式(浏览器方式,json方式) -配置文件方式(全局)  -如果没有配置,默认有浏览器和json   -drf有默认配置文件   from rest_framework.settings import DEFAULTS   REST_FRAMEWORK = {   'DEFAULT_RENDERER_CLASSES': ( # 默认响应渲染类    'rest_framework.renderers.JSONRenderer', # json渲染器    'rest_framework.renderers.BrowsableAPIRenderer', # 浏览API渲染器   )   } -在视图类中配置(局部)  -粒度更小  -class BookDetail(APIView):   renderer_classes=[JSONRenderer,]

2.Response构造

源码内构造方式: Response(data, status=None, template_name=None, headers=None, content_type=None)

####

data数据不要是render处理之后的数据,只需传递python的内建类型数据即可,REST framework会使用renderer渲染器处理data

data不能是复杂结构的数据,如Django的模型类对象,对于这样的数据我们可以使用Serializer序列化器序列化处理后(转为了Python字典类型)再传递给data参数。

参数说明:

  • data: 为响应准备的序列化处理后的数据;
  • status: 状态码,默认200;
  • template_name: 模板名称,如果使用HTMLRenderer 时需指明;
  • headers: 用于存放响应头信息的字典;
  • content_type: 响应数据的Content-Type,通常此参数无需传递,REST framework会根据前端所需类型数据来设置该参数。

3.常用属性

#常用属性 -from rest_framework.response import Response -data:响应的字典 -status:http响应的状态码  -drf提供给你了所有的状态码,以及它的意思  from rest_framework.status import HTTP_201_CREATED -template_name:模板名字(一般不动),了解 -headers:响应头,字典 -content_type:响应的编码方式,了解   # 自己封装一个Response对象  class CommonResponse:  def __init__(self):   self.code=100   self.msg=''  @property  def get_dic(self):   return self.__dict__# 自己封装一个response,继承drf的Response

4.状态码

为了方便设置状态码,REST framewrok在rest_framework.status模块中提供了常用状态码常量

#1)信息告知 - 1xxHTTP_100_CONTINUEHTTP_101_SWITCHING_PROTOCOLS#2)成功 - 2xxHTTP_200_OKHTTP_201_CREATEDHTTP_202_ACCEPTEDHTTP_203_NON_AUTHORITATIVE_INFORMATIONHTTP_204_NO_CONTENTHTTP_205_RESET_CONTENTHTTP_206_PARTIAL_CONTENTHTTP_207_MULTI_STATUS#3)重定向 - 3xxHTTP_300_MULTIPLE_CHOICESHTTP_301_MOVED_PERMANENTLYHTTP_302_FOUNDHTTP_303_SEE_OTHERHTTP_304_NOT_MODIFIEDHTTP_305_USE_PROXYHTTP_306_RESERVEDHTTP_307_TEMPORARY_REDIRECT#4)客户端错误 - 4xxHTTP_400_BAD_REQUESTHTTP_401_UNAUTHORIZEDHTTP_402_PAYMENT_REQUIREDHTTP_403_FORBIDDENHTTP_404_NOT_FOUNDHTTP_405_METHOD_NOT_ALLOWEDHTTP_406_NOT_ACCEPTABLEHTTP_407_PROXY_AUTHENTICATION_REQUIREDHTTP_408_REQUEST_TIMEOUTHTTP_409_CONFLICTHTTP_410_GONEHTTP_411_LENGTH_REQUIREDHTTP_412_PRECONDITION_FAILEDHTTP_413_REQUEST_ENTITY_TOO_LARGEHTTP_414_REQUEST_URI_TOO_LONGHTTP_415_UNSUPPORTED_MEDIA_TYPEHTTP_416_REQUESTED_RANGE_NOT_SATISFIABLEHTTP_417_EXPECTATION_FAILEDHTTP_422_UNPROCESSABLE_ENTITYHTTP_423_LOCKEDHTTP_424_FAILED_DEPENDENCYHTTP_428_PRECONDITION_REQUIREDHTTP_429_TOO_MANY_REQUESTSHTTP_431_REQUEST_HEADER_FIELDS_TOO_LARGEHTTP_451_UNAVAILABLE_FOR_LEGAL_REASONS#5)服务器错误 - 5xxHTTP_500_INTERNAL_SERVER_ERRORHTTP_501_NOT_IMPLEMENTEDHTTP_502_BAD_GATEWAYHTTP_503_SERVICE_UNAVAILABLEHTTP_504_GATEWAY_TIMEOUTHTTP_505_HTTP_VERSION_NOT_SUPPORTEDHTTP_507_INSUFFICIENT_STORAGEHTTP_511_NETWORK_AUTHENTICATION_REQUIRED

 

原文转载:http://www.shaoqun.com/a/489199.html

海淘贝:https://www.ikjzd.com/w/1726

易联通:https://www.ikjzd.com/w/1854.html

网络星期一:https://www.ikjzd.com/w/80


一、Request#常用属性-data:前端以post请求提交的数据都在它中-FILES:前端提交的文件-query_params:就是原来的request.GET-重写了__getattr__-使用新的request.method其实取得就是原生request.method(通过反射实现)二、Response1.全局&局部配置模板的显示方式rest_framework.response.
vat:https://www.ikjzd.com/w/109
拍拍网:https://www.ikjzd.com/w/2205
澳门葡萄酒博物馆门票多少钱?开放时间?:http://tour.shaoqun.com/a/44974.html
浙江莫干山有什么娱乐项目?德清莫干山娱乐项目价格表?:http://tour.shaoqun.com/a/48151.html
亚马逊广告常见10大误区:https://www.ikjzd.com/home/21554

没有评论:

发表评论