如何快速看懂一个 django 项目?

2016-07-18 12:48:05 +08:00
 daveze

django 新手,公司刚好有个机会可以让我试试 django 的开发,但是 clone 下整个项目,配好开发环境,感觉一片茫然,大牛写的代码太复杂了。 大家有什么好的办法,指导下如何去熟悉一个 django 项目嘞?

6181 次点击
所在节点    Django
21 条回复
Mark24
2016-07-18 12:53:17 +08:00
先熟悉 Django 的 App 插件式的 MVC 的套路
再熟悉你们公司大牛写代码的套路
硬着头皮看通一个,一通百通
felixzhu
2016-07-18 12:55:57 +08:00
盯着一个 request 的看处理流程,
然后给自己领一个任务,尝试着去做,功能做出来之后找人 review ,两三次保证就熟了
Lihz
2016-07-18 13:11:09 +08:00
url->view->models
linuxchild
2016-07-18 13:27:23 +08:00
理解项目的目标,然后看各个 app 实现的功能, models ,再看 views ,然后根据 urls 走一遍
likezun
2016-07-18 13:50:36 +08:00
无解
andrewpsy
2016-07-18 14:40:56 +08:00
不熟悉 Django 但我总结的看现存项目代码的方法应该可以套用到任何类型的项目:
1. 如果你们的项目没有版本控制,请辞职。
2. 从第一 commit 开始,大致浏览一遍提交简介( commit messages )。这步很重要,主要是大致了解项目的进化过程。一行代码都不要看。如果 commit message 都是 wip 或者 backup 或者“顶”这类的无用信息,请辞职。
3. 在项目进化过程中挑出大牛写的 feature 们,决定一个主攻方向,最好不要挑太基础的库,应当优先挑一个迭代次数适中的商务逻辑的实现。这时可以画画流程/关系图什么的。
4. 把决定好的那个商务逻辑涉及到的主要文件找出来( IDE 只打开这些文件),用版本控制看第一次提交的代码。如果一个商务逻辑只有一个 commit 并一次添加了几十上百个文件,可考虑辞职也可以挺一挺,主要看你的能力和决心。
5. 用版本控制不断 checkout 重要 commit ,循序渐进的看下去。不需要非常仔细的读通每行代码。主要是看大牛如何实现商务逻辑的需求并如何应对需求变化(看思维方式和处理问题的风格,需求变化时如何 refactor 这一点估计可以看出大牛人的性格)。到这个程度后看不懂的东西问大牛大牛没法不好好对待你了。
Shawdon
2016-07-18 14:57:34 +08:00
不自己搜索下就来提问题真的好么?
http://sjc.v2ex.com/t/262436
daveze
2016-07-18 15:30:46 +08:00
@Shawdon 感谢,下次注意
shooter
2016-07-18 16:02:43 +08:00
@andrewpsy 从第一个 commit 看, 会死
upczww
2016-07-18 16:56:00 +08:00
我的建议是看下 django 的教程,不习惯英文看这里 python.usyiyi.cn 先理清它的结构,是怎么工作的,然后再去看你说的那个项目。
julyclyde
2016-07-18 17:34:12 +08:00
boyhailong
2016-07-18 19:48:16 +08:00
首先熟悉 django 最小的项目是如何布局的;一个请求和回应以及模版渲染怎么回事;至于后台逻辑,当然得看下文档咯
daveze
2016-07-18 21:39:05 +08:00
@boyhailong 最小项目结构是看得懂,但是一到公司的项目,就懵逼了,各种语句见都没见过...
daveze
2016-07-18 21:41:31 +08:00
@andrewpsy git 是有的, commit 也是规范的,我也觉得从第一个看是个方法,但是看了下有 400 多个 commit....感觉可以重点看下前期的
lichee
2016-07-18 21:47:05 +08:00
把 django book 快速看一遍 就 ok 了
andrewpsy
2016-07-19 01:05:27 +08:00
@shooter 第一个 commit 往往决定了后面的走向,所以认真看一下,后面怎么办我在第五条里说了“ checkout 重要 commit ”看,不需要也不可能短时间内每行代码都看懂,主要是看懂个大概。


@daveze 见以上。共 400 多个 commit 算是挺好的了。我们组的拳头产品一个月的 commit 都不止 400 。
ericls
2016-07-19 01:20:22 +08:00
Django 写出来看不懂 可能是写的人没写好
georgema1982
2016-07-19 01:21:35 +08:00
@daveze 比如什么样的语句?
cxh116
2016-07-19 08:16:42 +08:00
首先看懂 python 代码,然后自己用 django 参考官方手册不用 admin 写个 crud 操作,这样差不多入门了。应该看懂别人的代码大概没问题了。
lenciel
2016-07-19 11:06:59 +08:00
首先你要对 Django 框架有个大概的理解,然后从小 bug ,小 feature 开始做,逐步深入 Django 这个框架,同时理解公司的业务逻辑。

学习过程中,你会发现公司的项目随着时间沉淀,会大量使用 CBV 。而你能找到的教程和示例工程都是 FBV 多一点,所以你需要花一些时间看明白那些基础类在干什么,业务逻辑和数据是如何分离的,前端和后端是如何分离的。

接下来你大概就可以从后端的开发里面抬起头,来看看整个公司的 tech stack 。去理解前端和后端是怎么配合的,去理解运维和部署是怎么自动化的等等。

我还有个建议,在学习里面有任何问题,其实问身边人是最快的。我看了一下这些回帖,感觉有指导意义的不多。比如有回复说 Django 是 MVC 框架的,有回复说了一堆都是什么情况你该 quit 的...很多时候一个 repo 里面真正难懂的是业务逻辑(这里是在做什么)和方案选择(为什么这里要这样做),外面的人怎么可能比同事清楚呢?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/293169

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX