第 1 章:架构概述¶
多层应用程序¶
Odoo 遵循 多层架构,这意味着表示层、业务逻辑层和数据存储层是分离的。更具体地说,它使用三层架构(图片来自维基百科):
表示层是 HTML5、JavaScript 和 CSS 的组合。逻辑层完全用 Python 编写,而数据层仅支持 PostgreSQL 作为关系型数据库管理系统(RDBMS)。
根据模块的范围,Odoo 开发可以在这些层级中的任何一个进行。因此,在继续之前,如果您对这些主题没有中级水平的知识,复习一下可能是个好主意。
为了完成本教程,您需要具备非常基础的 HTML 知识和中级水平的 Python 知识。高级主题将需要更多其他学科的知识。有许多免费的教程可供选择,因此我们无法推荐某一个,因为这取决于您的背景知识。
仅供参考,这是官方的 Python 教程。
注解
自版本 15.0 起,Odoo 正在积极过渡到使用其内部开发的 OWL 框架 作为表示层的一部分。旧版 JavaScript 框架仍然受支持,但会随着时间推移被弃用。这将在高级主题中进一步讨论。
Odoo 模块¶
服务器和客户端扩展都被打包为 模块,这些模块可以选择性加载到 数据库 中。模块是一组针对单一目标的功能和数据集合。
Odoo 模块可以为 Odoo 系统添加全新的业务逻辑,或者修改和扩展现有的业务逻辑。例如,一个模块可以添加您国家的会计规则以支持 Odoo 的通用会计功能,而另一个模块可以添加对公交车队实时可视化的支持。
Odoo 中的一切都始于模块,也终于模块。
术语:开发者将其业务功能分组到 Odoo 模块 中。主要面向用户的模块被标记并显示为 应用,但大多数模块并不是应用。模块 也可以称为 插件,Odoo 服务器查找它们的目录构成了 addons_path
。
模块的组成¶
一个 Odoo 模块 可以 包含以下元素:
- 业务对象
业务对象(例如发票)被声明为一个 Python 类。这些类中定义的字段通过 ORM(对象关系映射) 层自动映射到数据库列。
- 对象视图
定义用户界面显示
- 数据文件
声明模型数据的 XML 或 CSV 文件:
- Web 控制器
处理来自 Web 浏览器的请求
- 静态 Web 数据
Web 界面或网站使用的图片、CSS 或 JavaScript 文件
这些元素都不是强制性的。有些模块可能只添加数据文件(例如特定国家的会计配置),而其他模块可能只添加业务对象。在本教程中,我们将创建业务对象、对象视图和数据文件。
模块结构¶
每个模块是 模块目录 中的一个目录。模块目录通过使用 --addons-path
选项指定。
一个 Odoo 模块通过其 清单 声明。
当 Odoo 模块包含业务对象(即 Python 文件)时,它们被组织为一个 Python 包,并包含一个 __init__.py
文件。该文件包含模块中各种 Python 文件的导入指令。
以下是一个简化的模块目录:
module
├── models
│ ├── *.py
│ └── __init__.py
├── data
│ └── *.xml
├── __init__.py
└── __manifest__.py
Odoo 版本¶
Odoo 提供 两个版本:Odoo Enterprise(授权和共享源代码)以及 Odoo Community(开源)。除了支持或升级等服务外,Enterprise 版本还为 Odoo 提供了额外的功能。从技术角度来看,这些功能只是在 Community 版本提供的模块基础上安装的新模块。
准备好了吗?现在是时候 编写您自己的应用程序 了!