美文网首页
请求-Django REST框架request.py

请求-Django REST框架request.py

作者: Mead170810 | 来源:发表于2019-10-31 17:48 被阅读0次

    请求-Django REST框架

    request.py

    请求

    如果你在做基于休息的网络服务.你应该忽略请求。

    Malcom TredinnickDjango开发商组

    REST框架Request类扩展标准。HttpRequest添加对REST框架的灵活请求解析和请求身份验证的支持。


    请求解析

    REST框架的请求对象提供灵活的请求解析,允许您使用JSON数据或其他媒体类型处理请求,其方式与通常处理表单数据的方式相同。

    .数据

    request.data返回请求主体的解析内容。这与标准类似。request.POSTrequest.FILES属性除外:

    • 它包括所有已解析的内容,包括文件和非文件投入。
    • 它支持解析除HTTP之外的HTTP方法的内容POST,这意味着您可以访问PUTPATCH请求。
    • 它支持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.userdjango.contrib.auth.models.AnonymousUser.

    有关详细信息,请参阅认证文件.

    .奥斯

    request.auth返回任何其他身份验证上下文。确切的行为request.auth取决于所使用的身份验证策略,但通常它可能是对请求进行身份验证的令牌的实例。

    如果请求未经身份验证,或者如果没有其他上下文,则默认值为request.authNone.

    有关详细信息,请参阅认证文件.

    .认证者

    这个APIView类或@api_view装饰器将确保此属性自动设置为认证实例,基于authentication_classes设置为视图或基于DEFAULT_AUTHENTICATORS背景。

    您通常不需要访问此属性。


    注:你可能会看到WrappedAttributeError调用.用户.奥斯财产。这些错误起源于作为标准的身份验证器。AttributeError但是,有必要将它们作为不同的异常类型重新引发,以防止它们被外部属性访问所抑制。Python不会意识到AttributeError起源于身份验证器,并将相反地假设请求对象没有.用户.奥斯财产。认证者需要被修复。


    浏览器增强

    REST框架支持一些浏览器增强功能,例如基于浏览器的增强。PUT, PATCHDELETE表格。

    .方法

    request.method返回超感知请求的HTTP方法的字符串表示形式。

    基于浏览器的PUT, PATCHDELETE表单被透明地支持。

    有关更多信息,请参见浏览器增强文档.

    内容类型

    request.content_type,返回一个表示HTTP请求正文的媒体类型的String对象,或者如果没有提供媒体类型,则返回一个空字符串。

    您通常不需要直接访问请求的内容类型,因为通常您将依赖REST框架的默认请求解析行为。

    如果确实需要访问请求的内容类型,则应使用内容类型属性优先于使用request.META.get('HTTP_CONTENT_TYPE'),因为它为基于浏览器的非表单内容提供了透明的支持。

    有关更多信息,请参见浏览器增强文档.

    溪流

    request.stream返回表示请求主体的内容的流。

    您通常不需要直接访问请求的内容,因为通常您将依赖REST框架的默认请求解析行为。


    标准HttpRequest属性

    作为REST框架的Request扩展Django‘sHttpRequest,所有其他标准属性和方法也是可用的。例如,request.METArequest.session字典可以正常使用。

    注意,由于实现原因,Request类不继承HttpRequest类,而是使用组合扩展类。

    相关文章

      网友评论

          本文标题:请求-Django REST框架request.py

          本文链接:https://www.haomeiwen.com/subject/guwtbctx.html