内容简介:如何阅读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版)
- 代码审计--源代码审计思路
- 如何阅读源代码
- 开放源代码库指南
- unittest 源代码阅读
- 扒一扒 EventServiceProvider 源代码
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Coding the Matrix
Philip N. Klein / Newtonian Press / 2013-7-26 / $35.00
An engaging introduction to vectors and matrices and the algorithms that operate on them, intended for the student who knows how to program. Mathematical concepts and computational problems are motiva......一起来看看 《Coding the Matrix》 这本书的介绍吧!