Django进阶篇 Rest framework (五)
一、使用 Django rest framework 认证组件
①实例
假如用户想获取自己的订单信息,发送请求之后返回订单信息以 json 格式的数据返回。
续
续
这了继承了 rest framework 中的 APIView,在 APIView 中将原生的 request 进行了封装,封装一些用于认证、权限的类,在请求来的时候,会依次通过 FirstAuthenticate,MyAuthenticate 两个类,并调用 authenticate 进行认证。
② 源码分析
使用 pycharm 作为集成开发工具,可以 ctrl + 鼠标左键 点击方法,或者类直接进入源码查看。
第一步,在路由匹配之后会先进入到 APIView 中的 as_view 方法中,然后进入到 django 的 View 中。
第二步,由于子类 APIView 已经实现了 dispatch 方法,接着返回 APIView 中的 dispatch 方法。
第三步,然后会发现 drf 对原生 request 做的操作。
第四步,这里的 initialize_request,主要进行封装。
第五步,而 initial 则会对调用封装类中的方法,实现各种功能。
到这就可以看到 request 在 drf 中大概的流程。
③ drf 认证流程
在上面的第四步和第五步可以看到 APIView 中的两个方法 initialize_request,initial
进入 initialize_request,查看 authenticators=self.get_authenticators()
这里的 authentication_classes,其实是一个所有认证类的集合(指的是一个可以迭代的容器对象,如 list,tuple 等,而不是特指 set() 内置类型)。
这里的 api_settings 其实就是 django 项目的全局配置文件 settings.py,这说明可以在需要认证的视图函数多的情况下使用全局配置使得每一个进行认证。