咋看基于Django的web application工程( 二 )


2. plugin:插件机制。像其他web组件,如session,认证服务,redis访问服务,你可以在你的代码里直接引入,自主管理,但这种东西其他项目也可能用到,你没必要到时候再写一遍,最好剥离出来。再者,web框架一般有一些约定的行为,比如session一般作为request属性,把代码重构成符合框架的使用习惯能降低成本。因此出现了插件机制,安装完之后可直接使用,django中往往以application的形式出现。
当然还有信号机制,日志机制其他的,这里暂时不说。
Web应用是如何组织的除了上述的从技术角度分层拆分,还要考虑从业务上怎么拆分。通常是两个思路:
1. 按照技术角度整理目录。源码目录下分为controllers, models, templates这些目录,然后在目录下在按照业务的角度分,比如controller下分accounts_controller.py post_controller.py
2. 按照业务角度整理目录。源码目录下分为accounts, posts,每个业务代表一个目录,业务目录下再从技术角度分,比如accounts下分为model.py,views.py等等。
django采用第2种方式,从目录结构上一眼看出业务分层,有比较好的隔离,如果淘汰某个业务代码,检索替换删除很容易。
如何读django项目读懂django需要理解三个层的东西
1. django框架内置了哪里流程,主要要明白application机制,中间件机制,认证机制,request有哪些属性
2. 该项目定制了哪些流程,如自己开发了哪些中间件,引入哪些application,自己开发了哪些backend,templateContext等等,这些是公共的,一般与settings.py放在同个目录下。
3. 就是理解业务代码了,读一读每个application。

■网友
你说的下面这些组件:

celery, nginx, monogo, redis
其实和 Django 没多大关系,Django 是一个 Web Framework 而已,你觉得无从下手,其实就是对这些组件不了解,这些组件都是为了解决一些问题而诞生的,比如 Celery 提供异步任务队列(Asynchronous Task Queue/Job)

除去 Celery 适合特别的场景先不谈,Nginx,MongoDB,Redis 这三个组件,我相信一般的互联网项目都避不开它们的

而 Django 呢,其实就像是一口锅,食材(组件)倒进去,美食(业务逻辑)拿出来
【咋看基于Django的web application工程】 我的 · 专栏 · 我的 GitHub


推荐阅读