如何阅读Django源代码-上篇(the5fire版)

栏目: Python · 发布时间: 7年前

内容简介:如何阅读Django源代码-上篇(the5fire版)

在那些优雅、易用、丰富的API背后,总是隐藏着不为人知的密术,好奇的技术人员也总想一探究竟。

由来

所有在用Django的同学都能体会到TA的强大,也能感受到TA的复杂。当能够通过Django完成简单或者复杂的业务功能之后,我们不可避免的想要了解TA更多。如何实现url router,如何实现的ORM,如何实现的debug模式的autoreload。技术上最有趣的事儿莫过如此,好奇,你就有机会一探究竟。源码随时为你敞开。

在工作的前几年,我们的小伙伴也产生过这样的好奇。问出这样的问题:“如何更好的阅读Django源码”。结果是被我们喷回去读Tornado源码。相对来说Django的代码中会充斥大量的业务代码,就技术氛围(鬼知道源代码里能不能读出技术氛围~~)而言,Tornado更好一些。But,如果你要长期使用Django还是阅读Django代码吧(这是后来我才想明白的事)。研究 工具 的意义毕竟是更好的解决问题。

前几天在the5fire博客的也有读者(@杨学光)问了一样的问题:如何入手研究Django源码。所以你看,岁岁年年花相似,年年岁岁人不同。这篇文章就写写如何阅读Django源代码。

在此之前,建议先阅读我之前的一篇文章 《Python工程师进阶之道》 ,就像我里面所说的:

好了,the5fire来总结下理论部分:从熟悉的地方中找到陌生的东西,然后搞懂,慢慢往外延伸,可能会比较吃力,但是哪有好走的捷径?

不知道 @杨学光 同学是否理解了。

如何阅读Django源代码

先唠叨几句阅读源码的方式,其实不止Django源代码,the5fire个人总结阅源代码的姿势也就那么几个:

  • 业务需要,遇到坑了,文档没找到,只能读代码,比如之前the5fire因为一个小问题去翻了一遍nginx的源码。带着问题去看,会更认真,收获的会更多。就像《如何阅读一本书》里面提到的一样。
  • 用着用着就开始好奇Django的CONN_MAX_AGE是怎么实现的,已经熟悉了各种API接口,所以想一探究竟。
  • 纯学习,学了一段时间 Python 了,想去找个源码看看,看看自己能不能看懂,还有哪些知识盲点。或者另外一种更高的境界是去学习下优秀框架的设计思想,如何对数据进行封装,如何使用各种魔法函数。
  • 找工作,简历上只写我熟悉Django和Tornado,显然不如写我阅读了Django和Tornado的源码,收获很多,之类的话有吸引力。
  • more and more —— 欢迎补充。

那么书归正传。如果你不熟悉Django,就妄想去读TA的源代码的话,那你学习到的只能是一些Python的技巧,比如闭包的使用,各种魔法方法的使用,线程的使用,弱引用的使用等等。对于理解Django是如何支撑起完美主义者的快速开发情结是没有帮助的。

所以第一步是用TA,先熟悉一块领域,比如说url router,然后再顺藤摸瓜。以此类推,熟悉了Model,Queryset,知道Queryset是惰性的之后,再去看TA是怎么做到的。继续摸瓜。

再此之后,去看看Django的文档,每个模块或者说每一层都已经划分的很清晰了,你需要自己把理解的东西对应到具体的那一层上去。比如说你看了Model的Queryset,然后可以对应到Model层;然后你看了Class Base Views部分的封装逻辑,然后你可以对应到View层,Class Base Views跟Model是怎么关联的,这样就可以连起来。以此类推。最终其实能够Get到的是,一个请求通过WSGI协议转到Django中来之后,每一层的处理逻辑是怎么样的。

几个入手点

下篇再写吧,没时间了,快上车~~~~~~~~~

----EOF-----

扫码关注,或者搜索微信公众号:码农悟凡

如何阅读Django源代码-上篇(the5fire版)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

让云落地

让云落地

【美】Michael J. Kavis(迈克尔 J.凯维斯) 著 / 陈志伟、辛敏 / 电子工业出版社 / 2016-3 / 65.00元

云计算落地已成事实。从前几年的概念普及,到如今越来越多的企业将业务迁移至云上,云计算正在改变整个社会的信息资源使用观念和方式。云计算还在不断成长,技术细节也在不断变化之中。对于使用者而言,能够基于自身的业务、技术和组织需求等各方面情况,选择正确的云服务模式,是成功使用云计算最关键的技术决策之一。 《让云落地:云计算服务模式(SaaS、PaaS和IaaS)设计决策》共有 16 章,作者有意避开......一起来看看 《让云落地》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

MD5 加密
MD5 加密

MD5 加密工具