daveze
V2EX  ›  Django

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

  •  
  •   daveze · Jul 18, 2016 · 7020 views
    This topic created in 3594 days ago, the information mentioned may be changed or developed.

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

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


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

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

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

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

    然后我现在可以去了解下 CBV 和 FBV 的异同...试试在公司项目中找到 CBV 的特点。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5694 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 148ms · UTC 02:30 · PVG 10:30 · LAX 19:30 · JFK 22:30
    ♥ Do have faith in what you're doing.