ODOO13 模块目录结构

334 阅读4分钟

通常情况下,一个模块应包含业务对象层,对象视图层,控制器层。和大多web框架一样,从最基本的角度理解,都是MVC结构。只是我们习惯的叫法不同。有强迫症的老师或同学,请将其与传统的MVC及各层整理对应起来,并留言在下方,方便其他人理解,谢谢。

业务对象层

业务对象层,在模块目录中,通常对应models 文件夹。在此文件夹中,必须有一个__init__.py文件 和 若干业务对象文件(又称模型文件)。业务对象被声明为Python类,写在.py文件中(称为资源文件),这些资源文件由Odoo根据在__init__.py文件中的引用配置生效。注:瞬态模型文件,通常存放在wizard文件夹下。往下看。

对象视图层

对象视图层,在模块目录中,通常对应views文件夹。在此文件夹中,存放的是若干.xml文件(我们称其为视图文件),用来构建业务对象的UI显示。每次增加新的视图文件,需要在模块清单文件 manifest.py 文件中的 data 键对应的值中增加视图文件的路径。

控制器层

控制器层,在模块目录中,通常对应controllers文件夹。用来处理来自网络浏览器的请求。在此文件夹中,必须有一个__init__.py 文件 和 若干路由处理文件(我们称控制器文件、接口文件、路由文件)。同样的,路由处理文件也被声明为Python类,写在.py文件中(称为资源文件),这些资源文件由Odoo根据在__init__.py文件中的引用配置生效。

除了基本的MVC框架对应的文件,还有一些文件夹,

静态文件管理文件夹

在模块中,使用static为其命名。通常情况下,模块下又有两个有效文件夹:description 和 src 文件夹。description文件夹用于存放模块的图标(icon.png)。src文件夹下,又有css、img、js、xml、scss等文件夹,存放不同的静态文件。

资源国际化文件夹

在模块中,使用i18n为其命名,i18n(其来源是英文单词 internationalization的首末字符i和n,18为中间的字符数)是"国际化"的简称。就是我们说的,翻译文件。

data文件夹

多用于存放预置数据文件。

demo文件夹

多用于存放演示数据文件。

wizard文件夹

wizard文件夹下,通常存放瞬态模型文件,包含其业务模型和其视图文件。在此文件夹下,通常也有一个__init__.py文件、若干个业务对象资源文件(.py)和若干个视图文件(.xml)。init.py 文件用于引用wizard文件夹下的业务对象资源文件,视图文件在模块的__manifest__.py文件夹的 data 键中引用。

注:瞬态模型中的数据,不会永久存放到数据库,Odoo系统隔一段时间,会对其数据进行清理。瞬态模型一般用来实现无需存放数据到数据库的功能,具体实现会在之后的章节演示实现。

security文件夹

用于存放模块权限、规则、群组等文件。通常会有若干个 *_security.xml 文件和一个ir.model.access.csv 文件。 *_security.xml 用来配置规则、群组等信息,ir.model.access.csv 用来配置群组的权限。可能你看到这里觉得麻烦摸不着头脑,不用怕,这里的实现,也会在之后的章节实现演示。

reprot文件夹

用来存放自定义报表文件。这里多使用QWEB去自定义报表,和wizard有点相同,该文件夹下,通常也有一个__init__.py文件、若干个业务对象资源文件(.py)和若干个视图文件(.xml)。init.py 文件用于引用wizard文件夹下的业务对象资源文件,视图文件在模块的__manifest__.py文件夹的 qweb 键中引用。具体实现会在之后的章节演示实现。

doc文件夹

不常用,多存放模块说明文件

test、tests文件夹

开发环境下,进行单元测试。

- models文件夹,用于存放业务对象模型(数据库表)文件,并使用一个 init.py文件进行引用。
- security文件夹,多用于控制权限,在odoo12版本,这个文件夹及其下的权限文件被设定为必须的。
- views文件,用于存放视图文件,视图文件格式为xml,构成业务对象的UI展示。
- __ init__.py,py文件之间引用的节点,将py文件自下至上打通。
- __ manifest__.py,用来配置模块信息,管理视图的引用。