更新了近两年的时间,对于早期就支持的读者确实表示抱歉,也很感谢各位的理解。 今天终于上传了最后一节,非常感谢各位读者的支持。
这个解读来源于一个读者的反馈,于是花了几分钟看了下这部分源码,打算用十分钟的时间写一下,预计阅读需要 5 分钟。
计划是先讲完Admin的源码,但在编写课件时意识到一个问题,那就是Admin相当于是Django所有模块的一个集成。Admin本身除了一个框架的一部分,也是一个独立的App。就像我们平时用Django开发的App一样。
当我们创建好一个Model之后,需要执行``makemigrations``操作,生成对应的Migrations文件。那么问题来了,Django是如何把Model生成对应的Migrations文件的呢?
很高兴能有这一系列的内容,可以分享自己对于Django源码的认识,交流源码学习的心得。今天正式开始。下面先来自我介绍一下。
原则:从实际用处着手,逐步深入 整体思路:从认识框架、安装框架、使用框架开发项目、到项目最终上线被用户访问的思路来分析源码。 目标读者: * 能够使用Django开发项目,想要更深入的了解Django内部原理 * 已经开始尝试翻源码,希望找个人一起交流 * 想要通过学习Django源码,写出更好代码
我之前在知乎的一个回答中提到(Django 多线程问题是怎么回事)提到之前写Java时,在读了部分tomcat源码之后,有一种豁然开朗的感觉。这种感觉对于程序员来说是相当重要的,有追求的技术人员对于探索事物(技术)的运作原理都有着强烈的好奇心。
> 关于Python中的metaclass(元编程),type,type.__new__动态创建类的使用,读懂这篇文章,你就会了。
> 在那些优雅、易用、丰富的API背后,总是隐藏着不为人知的密术,好奇的技术人员也总想一探究竟。
昨天有同学问了我这么个问题 t = [1, 2, 3] t[1:1] = [7] print t # 输出 [1, 7, 2, 3] 看了知乎,stackoverflow上的解答,发现源码还是最好的解释。上述关键位置已经加了注释,应该很好理解。