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

下一步

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

相关推荐
python零基础入门小白1 小时前
LangGraph智能体实战:如何用Langfuse构建AI运行时全链路可观测系统?
人工智能·学习·ai·chatgpt·程序员·大模型·智能体
z23456d2 小时前
第三十九天学习心得
学习
水巷石子2 小时前
学习langChain4j的第二天,体验springBoot中的starter
java·spring boot·学习·spring·langchain4j
程序员梅雨2 小时前
微服务学习最终篇: Elasticsearch
学习·elasticsearch·微服务
clorinda3 小时前
PyTorch 手写数字识别学习笔记
pytorch·笔记·学习
m4Rk_3 小时前
【论文阅读】Agent 记忆机制(63):SAMem——把经验记忆细化为带长期价值的状态—Thought
论文阅读·人工智能·学习·开源·github
kyrie_sakura3 小时前
MySQL数据库学习笔记1 -- 基础概念,sql语句
数据库·学习·mysql
吴声子夜歌4 小时前
Linux命令——学习Shell(三)
linux·chrome·学习
小猪佩奇TONY4 小时前
Linux 内核学习(18) --- linux dma_buf 机制
linux·运维·学习
叶子野格4 小时前
《Verilog学习:数字系统设计基础》
学习·fpga开发