odoo16入门教程第一章 架构总览
多层的应用
odoo遵循多层架构,也就是说,表现层,逻辑层和数据存储是分开的。更具体的说,odoo使用了三层架构。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a6jwKdg3-1685362679703)(null)]
表现层是由HTML5、JavaScript和CSS组成的;逻辑层完全用python写的,同时数据存储层只支持Postgresql数据库。
在odoo模块的开发过程中,这三层的只是都会用到,所以,在进一步学习之前,重新复习一下这几方面的知识也许是一个好主意,至少要达到中级水平。
为了完成这篇教程,你将需要基本的HTML知识和中级的Python知识。 高级主题将需要其他方面的更多知识。这里有很多教程可用免费的阅读,所以我们不能随便给你推荐,因为这依赖于你的知识背景。
这里是官方的Python教程Python tutorial.
Note:
自从odoo15开始,odoo开始积极的使用自己开发的OWL框架作为变现层的一部分。 原来的JavaScript框架依然被支持,但是迟早会被放弃,这将在以后的高级主题中讨论。
Odoo 模块
服务器和客户端的扩展都被打包成模块,其中的数据有选择的保存到数据库中。一个模块是为了一个单一的目的所设计的应用和数据的集合。
Odoo模块可以是一个全新的商业逻辑,也可以是对现有系统的继承或修改。 可用新建一个模块在odoo通用财务模块的基础上增加你自己国家的的会计规则,同时可用写另外一个模块实时的展示一个公共汽车队。
odoo中的任何东西都是从模块开始,从模块结束。
模块的组成:
一个Odoo模块可以包含下面的元素:
商业对象:
一个商业对象,比如发票被声明成一个Python类。 类中定义的字段会通过ORM层自动的映射成数据库中的列。
视图对象:
定义UI
数据文件
可用通过XML或者CSV文件类定义下面的模块数据:
- 视图或者报表
- 配置文件(模块的参数文件,安全规则)
- 演示数据
- 其他。。
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的安装过程。即使Odoo已经在你的系统里运行起来了,我们依然强烈的建议你回顾这一章并确定我们从相同的页面开始新应用的开发。