Request
如果你正在做基于 REST 的web 服务,那么请忽略 request.POST。
---- Malcom Tredinnick, Django 开发组人员
REST 框架的请求类扩展了 HttpRequest
,增加了 REST 框架的灵活请求解析和请求认证的支持。
Request parsing
REST 框架的请求对象提供了灵活的请求解析,允许您以与通常处理表单数据相同的方式处理带有 JSON 数据或其他媒体类型的请求。
.data
request.data 返回请求主体解析后的内容。它支持多种解析格式。具体看文档。
.query_params
主要是 GET 请求的参数
Request 并不是继承了 Django 的 HttpRequest,而是使用组合扩展类。
drf request 实现了 getattr() 方法:
def __getattr__(self, attr):
try:
return getattr(self._request, attr)
except AttributeError:
return self.__getattribute__(attr)
Response
与基本的 HttpResponse 不同,TemplateResponse 对象保留了试图提供了用于计算响应的上下文的详细讯息,知道需要时才会计算出最终的响应输出,稍后再响应过程中进行计算。
这个 Response 类是 Django 的子类SimpleTemplateResponse
。Response对象使用数据进行初始化,数据应由本地Python基元组成。REST框架然后使用标准的HTTP内容协商来确定它应该如何呈现最终响应内容。
你不一定要使用 Response
该类,如果需要,还可以从视图中返回常规 HttpResponse
或StreamingHttpResponse
对象。使用 Response该类只是提供了一个更好的界面,用于返回经过内容协商的 Web API 响应,可以呈现为多种格式。
创建一个 Response
Response
- 用法:
Response(data, status=None, template_name=None, headers=None, content_type=None)
Response该类使用的渲染器不能本地处理复杂的数据类型,例如 Django 模型实例,因此您需要在创建 Response 对象之前将数据序列化为基本数据类型。
您可以使用 REST 框架的 Serializer 类来执行此数据序列化,或者使用您自己的自定义序列化。
这个Response
类扩展了SimpleTemplateResponse
,所有通常的属性和方法也可以在响应中获得。例如,您可以用标准方式在响应中设置标题:
response = Response()
response['Cache-Control'] = 'no-cache'