Django Rest框架 APIView源码调用

Posted wuygblog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django Rest框架 APIView源码调用相关的知识,希望对你有一定的参考价值。

  上一篇说了请求访问的流程,这一篇说一下请求对应的源码调用

  • as_view
    • 定义view
    • dispatch
  • dispatch
    • initialize_request  
      • get_parsers                 (获取解析器)
      • parser_context                (解析上下文)
      • get_authentitors           (获取认证器)
      • get_context_negotiator        (获取上下文内容)
    • default_response_headers
    • initial
      • get_format_suffix
        • kwargs上获取的
        • key是settings中配置的FORMAT_SUFFIX_KWARG
      • perform_content_negotiation
        • get_renderers
        • get_content_negotiator
      • determine_version
        • versioning_class
      • perform_authentication
        • request.user
        • user是一个使用property修饰的函数
          • 获取request._user
          • 属性不存在则执行认证过程
          • 便利认证器
          • 调用认证器的方法authenticate
          • 如果认证成功会返回一个元祖(user,auth),user和auth会被存到request
          • 如果认证出现异常,或者所有认证器都没有成功,或直接进入_not_authenticated
        • get_authenticators获得的认证器
      • check_permissions
        • get_permissions
        • 迭代
        • 如果没有权限,会permission_denied
          • 直接抛异常,让程序终止
        • 什么情况算是有权限
          • 所有的权限器都无返回,has_permission都返回true
      • check_throttles
        • get_throttles
        • 节流起会有allow_request方法
          • 返回True代表允许
          • 返回False代表不允许
            • 不允许就会Throttled
            • 就是抛异常

以上是关于Django Rest框架 APIView源码调用的主要内容,如果未能解决你的问题,请参考以下文章

Django最牛逼,史上强无敌!最详细的教程!框架认证源码分析!

python Django Rest_Framework框架 APIView介绍与序列化器详解(图文并茂版)

python Django Rest_Framework框架 APIView介绍与序列化器详解(图文并茂版)

将 APIView 添加到 Django REST Framework 可浏览 API [重复]

即使我使用了 ScrapyItem.objects.all(),我在 django rest 框架的 APIView 内的 post 方法中也只得到一个对象。任何人都知道为啥

django rest框架在nginx后面但不直接给出403