Django REST frameworkI学习笔记

Requests

REST framework 的Request 类扩展了标准的 HttpRequest,增加了对 REST framework 灵活的请求解析和请求认证的支持。

请求解析

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

  1. data
    request.data返回请求主题的解析内容。与request.POST和request.FILES属性类似,除了:
    • 它包括所有解析的内容,包括文件和非文件输入。
    • 它支持解析 POST 以外的 HTTP 方法的内容,这意味着您可以访问 PUT 和 PATCH 请求的内容。
    • 它支持 REST framework 的灵活请求解析,而不仅仅是支持表单数据。例如,您可以像处理传入表单数据一样处理传入的 JSON 数据。
  2. .query_params
    request.query_params是request.GET的更准确的命名同义词。官方推荐用前者。
  3. .parsers
    APIView 类或 @api_view 装饰器将根据视图上设置的 parser_classes 或根据 DEFAULT_PARSER_CLASSES 设置确保将此属性自动设置为 Parser 实例列表。

认证

  1. .user
    request.user 通常会返回 django.contrib.auth.models.User 的一个实例,但其行为取决于正在使用的身份验证策略。
  2. .auth
    request.auth 返回任何附加的认证上下文。request.auth 的确切行为取决于正在使用的身份验证策略,但它通常可能是请求通过身份验证的令牌实例。
    如果请求未经身份验证,或者没有附加上下文,则 request.auth 的默认值为 None。
  3. .authenticators
    APIView 类或 @api_view 装饰器将根据视图上设置的 authentication_classes 或根据 DEFAULT_AUTHENTICATORS 设置确保将此属性自动设置为 Authentication 实例列表。
    您通常不需要访问此属性。

浏览器增强

REST framework 支持一些浏览器增强功能,例如基于浏览器的 PUTPATCHDELETE 表单。

  1. .method
    request.method 返回大写字符串表示的请求 HTTP 方法。
    透明地支持基于浏览器的 PUT,PATCH 和 DELETE 表单。
  2. .content_type
    request.content_type 返回表示 HTTP 请求正文的媒体类型的字符串对象,如果没有提供媒体类型,则返回空字符串。
    您通常不需要直接访问请求的内容类型,因为您通常会依赖 REST framework 的默认请求解析行为。
    如果确实需要访问请求的内容类型,则应该优先使用 .content_type 属性,而不是使用 request.META.get(‘HTTP_CONTENT_TYPE’),因为它为基于浏览器的非表单内容提供了透明支持。
  3. .stream
    request.stream 返回一个代表请求主体内容的流。
    您通常不需要直接访问请求的内容,因为您通常会依赖 REST framework 的默认请求解析行为。

标准的HttpRequest属性

由于 REST framework 的 Request 扩展了 Django 的 HttpRequest,所有其他标准属性和方法也可用。例如 request.META 和 request.session 字典可以正常使用。

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值