Odoo采用C/S架构,客户端通过Web浏览器访问服务端,遵从RPC协议。业务逻辑和扩展通常在服务端执行,而只有添加客户端支持的新特征才会在客户端添加代码(例如,交互过程中新数据的映射表示)。启动服务器,只需要在shell中调用命令odoo-bin,或者完整的路径名调用:
odoo-bin
通过Ctrl-c或杀死相应的系统进程来停止Odoo服务。
构建一个Odoo模块服务端扩展和客户端扩展都被封装为模块,这些模块可选择性的被安装,安装完成后通过数据库来加载。模块即可以是全新的业务逻辑,也可以是更改和扩展已有的业务逻辑。比如创建一个中国会计模块,将中国的会计准则添加到Odoo的通用会计中,也可以创建一个全新的实时可视化管理车队的模块。Odoo中的所有功能都是包含在模块中。
模块的组成
Odoo模块包含多个部分:
业务对象
Python类,这些类会被Odoo框架自动持久化,持久化的方式决定于类的定义。
数据文件
包括视图、菜单、动作、工作流、权限、演示数据等,以XML或CSV文件定义。
Web控制器
处理Web浏览器的请求
静态页面数据
网站或界面使用的图片、CSS或Javascript文件
模块结构
每个模块都是模块目录中的一个子目录。可以通过--addons-path选项指定模块目录的路径。
提示
大多数命令行选项可以通过配置文件进行设置
Odoo模块由清单文件进行声明。查看清单文件文档了解详细信息。模块是一个包含__init__.py文件的的Python包,__init__.py文件包含了模块需要的导入的各Python文件。
例如,如果模块中包含mymodule.py文件,__init__.py应该这样写:
from . import mymodule
Odoo提供了脚手架机制来快速创建新模块,odoo-bin子命令scaffold用来创建一个空模块
$ odoo-bin scaffold <模块名> <模块放置路径>
windows 使用
python odoo-bin scaffold my_diy_module my_dir_path python odoo-bin scaffold 模型名称 放置它的位置
该命令为模块创建一个子目录,并自动为模块创建一些标准文件。这些文件大多只包含被注释的代码和XML元素。后面将解释这些文件的含义。
执行后会发现在 odoo-12.0/my_addons 里面有个新建的文件夹 example, 里面会包含__init__.py、manifest.py、controllers、demo、models、security、views这几个文件夹。
应用目录含义说明manifest.py 内容说明controllers # 控制器 (HTTP路径)
data # 演示和数据XML
doc # 模型说明
models # 定义模型
report # 报告
security # 权限管理
i18n # 翻译文件
views # 视图和模型
static # 静态文件css、js、img等
tests # 存放 python 和 yml 测试用例
wizard # 放临时的 model 和视图
__manifest__.py # 模块详细信息&依赖
# -*- coding: utf-8 -*- { # 模型名 'name': "example", # 摘要 'summary': """ 模块简要说明,用作模块列表上模块下方的副标题""", # 介绍 'description': """ 对模块用途的详细说明 """, # 作者 'author': "GMH", # 网址 'website': "http://www.yourcompany.com", # Categories can be used to filter modules in modules listing # Check https://github.com/odoo/odoo/blob/12.0/odoo/addons/base/data/ir_module_category_data.xml # for the full list # 类别 'category': 'Uncategorized', # 版本号 'version': '0.1', # 应用模块依赖(此模块正常工作所必需的任何模块) 'depends': ['base'], # Web每次需要加载的数据文件 'data': [ # 'security/ir.model.access.csv', 'views/views.xml', 'views/templates.xml', ], # 演示文件(只在演示模式下加载的文件) 'demo': [ 'demo/demo.xml', ], }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)