请求-Django REST框架
请求
如果你在做基于休息的网络服务.你应该忽略请求。
Malcom TredinnickDjango开发商组
REST框架Request类扩展标准。HttpRequest添加对REST框架的灵活请求解析和请求身份验证的支持。
请求解析
REST框架的请求对象提供灵活的请求解析,允许您使用JSON数据或其他媒体类型处理请求,其方式与通常处理表单数据的方式相同。
.数据
request.data返回请求主体的解析内容。这与标准类似。request.POST和request.FILES属性除外:
- 它包括所有已解析的内容,包括文件和非文件投入。
- 它支持解析除HTTP之外的HTTP方法的内容
POST,这意味着您可以访问PUT和PATCH请求。 - 它支持REST框架灵活的请求解析,而不仅仅是支持表单数据。例如,您可以以处理传入表单数据的方式处理传入的JSON数据。
有关详细信息,请参阅解析器文档.
.query_params
request.query_params的同义词。request.GET.
为了代码中的清晰性,我们建议使用request.query_params而不是Django的标准request.GET...这样做将有助于使您的代码库更加正确和明显--任何HTTP方法类型都可能包含查询参数,而不仅仅是GET请求。
解析器
这个APIView类或@api_view装饰器将确保此属性自动设置为Parser实例,基于parser_classes设置为视图或基于DEFAULT_PARSER_CLASSES背景。
您通常不需要访问此属性。
注:如果客户端发送格式错误的内容,则访问request.data可能引发ParseError...默认情况下REST框架的APIView类或@api_view装饰器将捕获错误并返回400 Bad Request回应。
如果客户端发送的请求具有无法解析的内容类型,则UnsupportedMediaType异常将引发,默认情况下该异常将被捕获并返回415 Unsupported Media Type回应。
内容协商
请求公开一些允许您确定内容协商阶段结果的属性。这允许您实现行为,例如为不同的媒体类型选择不同的序列化方案。
接受渲染器
内容协商阶段选择的呈现器实例。
接受媒体类型
表示内容协商阶段接受的媒体类型的字符串。
认证
REST框架提供灵活的、按请求进行的身份验证,使您能够:
- 对API的不同部分使用不同的身份验证策略。
- 支持使用多个身份验证策略。
- 提供与传入请求相关联的用户和令牌信息。
.用户
request.user的实例。django.contrib.auth.models.User,尽管行为取决于所使用的身份验证策略。
如果请求未经身份验证,则默认值为request.user是django.contrib.auth.models.AnonymousUser.
有关详细信息,请参阅认证文件.
.奥斯
request.auth返回任何其他身份验证上下文。确切的行为request.auth取决于所使用的身份验证策略,但通常它可能是对请求进行身份验证的令牌的实例。
如果请求未经身份验证,或者如果没有其他上下文,则默认值为request.auth是None.
有关详细信息,请参阅认证文件.
.认证者
这个APIView类或@api_view装饰器将确保此属性自动设置为认证实例,基于authentication_classes设置为视图或基于DEFAULT_AUTHENTICATORS背景。
您通常不需要访问此属性。
注:你可能会看到WrappedAttributeError调用.用户或.奥斯财产。这些错误起源于作为标准的身份验证器。AttributeError但是,有必要将它们作为不同的异常类型重新引发,以防止它们被外部属性访问所抑制。Python不会意识到AttributeError起源于身份验证器,并将相反地假设请求对象没有.用户或.奥斯财产。认证者需要被修复。
浏览器增强
REST框架支持一些浏览器增强功能,例如基于浏览器的增强。PUT, PATCH和DELETE表格。
.方法
request.method返回超感知请求的HTTP方法的字符串表示形式。
基于浏览器的PUT, PATCH和DELETE表单被透明地支持。
有关更多信息,请参见浏览器增强文档.
内容类型
request.content_type,返回一个表示HTTP请求正文的媒体类型的String对象,或者如果没有提供媒体类型,则返回一个空字符串。
您通常不需要直接访问请求的内容类型,因为通常您将依赖REST框架的默认请求解析行为。
如果确实需要访问请求的内容类型,则应使用内容类型属性优先于使用request.META.get('HTTP_CONTENT_TYPE'),因为它为基于浏览器的非表单内容提供了透明的支持。
有关更多信息,请参见浏览器增强文档.
溪流
request.stream返回表示请求主体的内容的流。
您通常不需要直接访问请求的内容,因为通常您将依赖REST框架的默认请求解析行为。
标准HttpRequest属性
作为REST框架的Request扩展Django‘sHttpRequest,所有其他标准属性和方法也是可用的。例如,request.META和request.session字典可以正常使用。
注意,由于实现原因,Request类不继承HttpRequest类,而是使用组合扩展类。








网友评论