odoo 学习- 02. Odoo 核心框架探究

02. Odoo 核心框架探究

在了解了工程目录后,我们进入 odoo/ 目录,这是 Odoo 作为一个 Application Server 的核心所在。

1. 启动入口 (odoo-bin)

Odoo 的启动非常简单,查看 odoo-bin 文件:

python 复制代码
#!/usr/bin/env python3
import odoo.cli

if __name__ == "__main__":
    odoo.cli.main()
  • 逻辑 :它仅仅是调用了 odoo.cli.main()
  • 扩展 :所有的命令行操作(如启动服务器、生成脚手架、部署)都由 odoo.cli 模块管理。

2. 核心目录分析 (odoo/)

这个目录包含了构建企业级应用所需的所有基础设施:

目录/文件 作用说明
cli/ Command Line Interface 。包含 command.py, server.py 等。当我们运行 ./odoo-bin -c odoo.conf 时,就是这里的代码在解析参数并启动服务。
http.py Web 框架入口。Odoo 基于 werkzeug 实现了自己的 Web 框架。它负责处理所有的 HTTP 请求,无论是网页访问还是 JSON-RPC 接口调用。
api/ 新 API 定义 。定义了 Environment (env),这是我们在开发中最常用的对象,用于操作数据库和上下文。
models/ ORM 模型基类 。定义了 Model, TransientModel 等基类。所有的业务对象(如 客户、订单)最终都继承自这里的类。
fields/ 字段类型定义 。定义了 Char, Integer, Many2one 等字段类型。
sql_db.py 数据库驱动。负责 PostgreSQL 连接池的管理和 SQL 执行。
service/ 服务进程管理。管理 WSGI Server 的启动、Cron 作业的调度等。

3. 关键机制速览

ORM (对象关系映射)

Odoo 最大的特色是其强大的 ORM。开发者不需要写 SQL,只需要定义 Python 类。

  • 定义 :继承 models.Model
  • 字段 :使用 fields.Char() 等定义列。
  • 映射:Odoo 启动时会自动在数据库创建对应的表。

模块化 (Addons)

虽然 addons 目录在根目录下,但 odoo/addons 里面也包含了一些基础模块(如 base)。

  • 系统启动时,会加载 addons path 下的所有模块。
  • 通过 __manifest__.py 读取模块元数据。

下一步

理解了这些基础设施后,我们将在下一章实际追踪一个业务请求:从浏览器点击保存,到数据库插入一条记录,中间到底发生了什么?

相关推荐
一楼的猫39 分钟前
AI写作检测机制技术深度解析:200+维度检测、叙事指纹与网文AI辅助怎么过审
人工智能·学习·安全·chatgpt·ai写作
报错小能手2 小时前
OpenTenBase学习——分布式数据库 / 集群主流架构分类
学习
灵性(๑>ڡ<)☆3 小时前
Java学习笔记 --面向对象进阶
java·笔记·学习
β添砖java3 小时前
Ollama工具学习
学习
小巧的砖头4 小时前
使用SVN+CruiseControl+ANT实现持续集成之一
学习·算法
俭朴的奇异果4 小时前
MongoDB实战开发 【零基础学习,附完整Asp.net示例】
学习·mongodb·asp.net
承渊政道4 小时前
【Python学习】(了解Python背景知识、搭建 Python 环境以及安装PyCharm)
python·学习·pycharm·搭建python环境
东京老树根4 小时前
SAP学习笔记 - MM模块06 - 库存物料,消耗物料,物料类型NLAG,如何确定会计科目,无物料信息记录(通过物料组),排序字符串,消耗物料的收货
学习
茯苓gao18 小时前
嵌入式开发笔记:CANopen相关移位运算与通信协议术语详解
网络·嵌入式硬件·学习·信息与通信
HERR_QQ21 小时前
强化学习的数学原理 学习笔记
人工智能·笔记·学习·自动驾驶