咋看基于Django的web application工程

利益相关:
自嘲『全干工程师』,Python/JavaScript,Django Web 一年半。
这个题涉及到的东西有些多,而题主也没有交代出具体水平。那我就从我的直觉上简单分享几点经验吧。希望有帮助。
读源码,是一个技术活。一是忌讳要想读懂全部,另一个忌讳是以为自己能一下子毫无障碍的全部代码。
所谓『横看成岭侧成峰,远近高低都不同』.
从不同的角度来读源码,一定要带上具体的问题来读,分享我的经验,比如说
第一步:按照 MVC (Model View Control) 的思路来读
目的是搞清楚项目大致是怎么用 Django 本身的。数据库是怎么设计的?有哪些模块,有没有相关的开发文档。项目结构是什么样子的,MVC(Django 里叫做 MVT) 里面是怎么安排代码的?是不是分层清晰,有没有 Service 层? Service 层里面做了什么。MiddleWare 里面做了什么?UrlDispatch 做了什么?有哪些 Form?第一步的时候适合配合 Django 的 Guide 一起读。效果更佳第二步:按照系统优化来读后端组件 在 Django 中是怎么使用的。
Nginx 是用来转发请求的,那么除非我要处理请求响应(比如 gzip, 修改请求头之类), 一般只需要理解基本的配置就好了。Redis 一般在 Django 中有两个用途,一个是做 Cache, 另一个做异步任务。那么,搞清楚系统哪里做了 Cache, 哪里需要做异步任务,搞懂你在什么时候需要添加一个异步任务,什么时候需要做缓存,具体怎么写,参考现有的代码就好了。mongoDB 是用来存取数据的,你可以当成一个用 JS 语法取代 SQL 语法的一种无模式的数据库。Celery 如何结合 Redis 做异步的?你直接搭建一个小环境来做个简单的异步任务试试,然后看一下文档就知道怎么用。第二步的时候 Github 上找找相关实例。效果更佳BTW , 其实还有 Gunicorn/Uwsgi 之类为啥没提到?第三步:按照 开发的工作流来读
假如让你添加一个已有的功能,或者增强某一块的代码,你能不能快速定位到那片代码。如果不能的话,记下来,找个身边老手问问。团队里面用 Django 的开发具体流程是什么?找大神添加一个很小的功能,问问这个功能从添加到部署需要有哪些具体的步骤。维护一个现有系统最大的优势是你可以拷贝原先的代码从而添加新功能,并且有老手咨询题主说到了快速掌握,我理解的快速掌握指的是
有大致的思路可以按图索骥。比如这篇文章。读代码 / 文档抓大放小,该略读就略读(比如知道 Nginx 的大致作用就好,做优化请求响应的时候再翻看文档),该精读则精读(具体一个关键的功能)。祝好

■网友
web应用开发关键在哪Web应用开发对语言掌握程度要求不高,毕竟大部分场景都是拿到request,处理一下,然后response,不会涉及复杂操作。Web应用开发关键是要理解流程——如请求流程,认证流程,异常处理流程,信号机制等等。这些流程通常是由web框架替我们完成,它将各个部分解耦,合理安排。
web框架是如何拆分的web通常将流程解耦成为以下几个:
1. application:必不可少,一个应用程序对象,用于处理wsgi发过来的请求与管理框架的各个部分。
2. router: 路由器,将请求发给对应的处理器。
3. controller:处理器,MVC分层中的C层,djang中叫做view。业务逻辑放在这里,负责接受请求,处理逻辑,调用model和templates,然后返回。
4. model:数据模型,MVC分层中的M层,通常是一个orm,关于数据库的操作放在这里。
5. templates:html模板。MVC分层的View层,被用于渲染成html。
以上能让你写代码时关注点得以分离。但你写多了还是会发现很多重复代码,所以引入以下:
1. middleware:中间件,也叫拦截器。例如以下场景:”只有登录用户才能访问的请求“会让相关的controller都得做一遍判断,”报错了返回指定500页面“会让每个页面都得再做一次处理。它思路很简单,就是在请求刚到的时候做一次判断,请求返回的时候再做一次判断


推荐阅读