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 读取模块元数据。

下一步

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

相关推荐
西岸行者5 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
悠哉悠哉愿意5 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
别催小唐敲代码5 天前
嵌入式学习路线
学习
毛小茛5 天前
计算机系统概论——校验码
学习
babe小鑫5 天前
大专经济信息管理专业学习数据分析的必要性
学习·数据挖掘·数据分析
winfreedoms5 天前
ROS2知识大白话
笔记·学习·ros2
在这habit之下5 天前
Linux Virtual Server(LVS)学习总结
linux·学习·lvs
我想我不够好。5 天前
2026.2.25监控学习
学习
im_AMBER5 天前
Leetcode 127 删除有序数组中的重复项 | 删除有序数组中的重复项 II
数据结构·学习·算法·leetcode
CodeJourney_J5 天前
从“Hello World“ 开始 C++
c语言·c++·学习