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

下一步

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

相关推荐
ASKED_201933 分钟前
Langchain学习笔记一 -基础模块以及架构概览
笔记·学习·langchain
(❁´◡`❁)Jimmy(❁´◡`❁)1 小时前
Exgcd 学习笔记
笔记·学习·算法
云小逸3 小时前
【nmap源码学习】 Nmap网络扫描工具深度解析:从基础参数到核心扫描逻辑
网络·数据库·学习
盐焗西兰花5 小时前
鸿蒙学习实战之路-Reader Kit构建阅读器最佳实践
学习·华为·harmonyos
深蓝海拓5 小时前
PySide6从0开始学习的笔记(二十七) 日志管理
笔记·python·学习·pyqt
慎独4136 小时前
科学赋能,让孩子专注高效爱上学习
学习
LGL6030A6 小时前
Java学习历程26——线程安全
java·开发语言·学习
学历真的很重要6 小时前
【系统架构师】第二章 操作系统知识 - 第二部分:进程管理(详解版)
学习·职场和发展·系统架构·系统架构师
Nebula_g6 小时前
线程进阶: 无人机自动防空平台开发教程(更新)
java·开发语言·数据结构·学习·算法·无人机
星期五不见面7 小时前
机器人学习!(二)ROS2-节点(7)2026/02/03
学习