前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django进阶篇 Rest framework (六)

Django进阶篇 Rest framework (六)

作者头像
小团子
发布2019-07-18 11:31:03
7050
发布2019-07-18 11:31:03
举报
文章被收录于专栏:数据云团

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,这说明可以在需要认证的视图函数多的情况下使用全局配置使得每一个进行认证。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-02-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据云团 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档