V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
daveze
V2EX  ›  Django

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

  •  
  •   daveze · 2016-07-18 12:48:05 +08:00 · 5986 次点击
    这是一个创建于 2837 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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


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

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

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

    我还有个建议,在学习里面有任何问题,其实问身边人是最快的。我看了一下这些回帖,感觉有指导意义的不多。比如有回复说 Django 是 MVC 框架的,有回复说了一堆都是什么情况你该 quit 的...很多时候一个 repo 里面真正难懂的是业务逻辑(这里是在做什么)和方案选择(为什么这里要这样做),外面的人怎么可能比同事清楚呢?
    daveze
        21
    daveze  
    OP
       2016-07-19 13:34:04 +08:00
    @lenciel 在这能遇上真是好巧啊;
    其实对于这个庞大的问题,是想看看广大人民群众的做法,真正具体的问题肯定是要问公司身边的人,不幸的是现在还不够熟悉项目( django ),导致有很多疑问但是不知道从何提起,想提问却似乎找不到问题的切入点。因此就是想自己把项目的总体流程搞清楚了,把各种基本的 django 知识弄明白了,再遇到具体问题,则可以具体请教。

    然后我现在可以去了解下 CBV 和 FBV 的异同...试试在公司项目中找到 CBV 的特点。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3378 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 00:40 · PVG 08:40 · LAX 17:40 · JFK 20:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.