专栏首页数据云团Django进阶篇 Rest framework (六)

Django进阶篇 Rest framework (六)

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

本文分享自微信公众号 - 数据云团(SmartData),作者:云团小楠

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-02-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python-数据挖掘-urllib库

    urllib 库是 Python 内置的 HTTP 请求库,它可以看作处理 URL 的组件集合。

    小团子
  • Django-DRF | ModelViewSet

    Django REST框架构建Web API。Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编...

    小团子
  • Python-数据挖掘-请求伪装

    对于一些需要登录的网站,如果不是从浏览器发出的请求,是不能获得响应内容。这种情况,需要将爬虫程序发出的请求伪装成一个从浏览器发出的请求。伪装浏览器需要自定义请求...

    小团子
  • Java设计模式-责任链模式

    责任链模式: 将能够处理某一类请求的对象串成一条链, 请求沿链传递, 链上的对象逐个判断是否有能力处理该请求. 使多个对象都有机会处理请求, 从而避免请求发送者...

    奋斗蒙
  • Windows创建窗口详解+代码---十天教会你俄罗斯方块

    代码地址:https://blog.csdn.net/qq_41603898/article/details/80968266

    用户2965768
  • Django-DRF | ModelViewSet

    Django REST框架构建Web API。Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编...

    小团子
  • 在市场还没有成熟之前,增强现实/虚拟现实企业如何才能生存下去

    虚拟现实的市场很大,增强现实的市场可能会更大(可能时间也更长)。但是就像很多新技术发展的初期一样,发展将是曲折的,道路是漫长的。今年整个行业可能就只有几十亿美...

    点滴科技资讯
  • 软考分类精讲-软件架构设计(五)

    cwl_java
  • 这个APT攻击与东南亚和中国南海问题相关?

    最近,一个与东南亚和中国南海问题相关的APT攻击被发现,该APT攻击以包括美国在内的各国政府和公司为目标 。经安全专家分析,该APT攻击所使用的全部工具代码都是...

    FB客服
  • Django的登录功能(六)

    发现上一篇里面忘了对勾选我同意协议的校验了。虽然也没啥协议,但是样子还是要做一下的。 找到register.html里面的对应区域:

    zx钟

扫码关注云+社区

领取腾讯云代金券