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

下一步

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

相关推荐
num_killer1 天前
小白的Langchain学习
java·python·学习·langchain
wdfk_prog1 天前
[Linux]学习笔记系列 -- hashtable
linux·笔记·学习
2501_942326441 天前
寒假高效记忆法助力学习飞跃
学习
计算机程序设计小李同学1 天前
基于SSM框架的动画制作及分享网站设计
java·前端·后端·学习·ssm
深情的小陈同学1 天前
工作学习笔记 —— 支持手机端的添加表单行操作
笔记·学习·ai编程
xiangshi_yan1 天前
内核学习之路【4/100】-io
学习
am心1 天前
学习笔记-小程序-导入商品浏览功能实现
笔记·学习
hkNaruto1 天前
【AI】AI学习笔记:LangGraph入门 三大典型应用场景与代码示例及MCP、A2A与LangGraph核心对比
人工智能·笔记·学习
专注于大数据技术栈1 天前
java学习--LinkedHashSet
java·开发语言·学习
副露のmagic1 天前
更弱智的算法学习 day36
学习·算法