概要
odoo中的__manifest__.py文件,是 Odoo 模块的描述文件,包含该模块的元数据。这个文件使用 Python 字典格式,定义了模块的基本信息和依赖关系。
详细说明
{
'name': 'Demo Name', # 模块名称
'version': '17.0.1.0.0', # 模块版本(注意:17版本一定要保证17.打头,在此之前版本可随意写,但不建议随意)
'summary': 'A short summary of the module', # 模块的简要描述
'description': """
This module provides custom features for my Odoo instance.
""", # 模块的详细描述
'author': 'Your Name', # 模块作者
'website': 'http://www.yourwebsite.com', # 作者或公司的网站
'category': 'Category Name', # 模块分类
'depends': ['base', 'sale'], # 依赖的其他模块列表
'data': [ # 数据文件列表,按加载顺序排列(所以这里应该注意视图顺序,否则影响安装升级)
'security/ir.model.access.csv', # 安全访问控制文件
'views/demo_views.xml', # 视图定义文件
'views/templates.xml', # 模板定义文件
'data/demo_data.xml', # 静态数据文件
'reports/demo_reports.xml', # 报表定义文件
],
'demo': [ # 示例数据文件列表,用于演示或测试
'demo/demo_demo.xml',
],
'installable': True, # 是否可安装
'application': True, # 是否为一个完整应用程序(如果是则显示在应用程序列表,否则作为一个插件进行安装)
'auto_install': False, # 是否自动安装(存在依赖关系时是否允许自动安装)
'pre_init_hook': 'pre_init_hook', # 模块安装前执行的钩子函数(可以从模块根目录下的__init__下定义方法,方法结构可以查看官方代码例子)
'post_init_hook': 'post_init_hook', # 模块安装后执行的钩子函数(可以从模块根目录下的__init__下定义方法,方法结构可以查看官方代码例子)
'uninstall_hook': 'uninstall_hook', # 模块卸载时执行的钩子函数(可以从模块根目录下的__init__下定义方法,方法结构可以查看官方代码例子)
'license': 'LGPL-3', # 模块的许可证类型
'external_dependencies': { # 外部依赖项,包括Python包和系统工具(如果环境不存在则会在安装升级中阻断)
'python': ['requests', 'snowballstemmer>10.0'], # 列出所需的Python包
'bin': ['wkhtmltopdf'], # 列出所需的系统命令行工具或二进制文件
},
"assets": { # 定义前端资源的资产
"web.assets_backend": [
"demo_name/static/src/js/demo_name.js", # JavaScript文件
'demo_name/static/src/templates/demo_name.xml', # XML模板文件
'demo_name/static/src/scss/demo_name.scss', # SCSS(CSS预处理器)文件
],
# 定义:后端资产(如JS、CSS文件)(常用,平时开发用到的前端文件基本直接丢这里)
# 使用场景:包含所有需要在Odoo后端界面中加载的静态文件,如JavaScript、CSS、SCSS、XML等。这些文件主要用于增强和定制Odoo后端用户界面的功能和样式。
'web.assets_common': [],
# 定义:公共资产
# 使用场景:包含所有Odoo模块中通用的CSS和JS文件,通常用于所有页面。
'web.assets_backend_legacy_lazy': [],
# 定义:后端遗留资产,懒加载
# 使用场景:用于后端的遗留资产,这些资产会在需要时懒加载,以减少初始加载时间。
'web.assets_frontend_minimal': [],
# 定义:前端最小化资产
# 使用场景:包含前端的最小化CSS和JS文件,主要用于提升页面加载性能,适用于对资源要求较高的前端页面。
'web.assets_frontend': [],
# 定义:前端资产
# 使用场景:包含前端常用的CSS和JS文件,用于用户界面的前端部分。
'web.assets_frontend_lazy': [],
# 定义:前端懒加载资产
# 使用场景:前端资产的懒加载版本,减少初始页面加载时间,适用于大规模应用或需要快速响应的前端页面。
'web.assets_backend_prod_only': [],
# 定义:仅后端生产环境资产
# 使用场景:仅在生产环境中使用的后端资产,通常用于优化性能和安全性。
'web.pdf_js_lib': [],
# 定义:PDF JS库
# 使用场景:包含用于生成和处理PDF文件的JavaScript库,通常用于报告和文档生成。
'web.report_assets_common': [],
# 定义:报告公共资产
# 使用场景:包含生成和显示报告所需的公共CSS和JS文件,适用于所有类型的报告页面。
'web.report_assets_pdf': [],
# 定义:PDF报告资产
# 使用场景:专门用于生成PDF报告的CSS和JS文件,确保PDF格式正确和美观。
'web.dark_mode_assets_common': [],
# 定义:公共暗模式资产
# 使用场景:包含公共的暗模式CSS文件,用于启用应用程序的暗模式界面。
'web.dark_mode_assets_backend': [],
# 定义:后端暗模式资产
# 使用场景:用于后端界面的暗模式CSS文件,提供一致的暗模式体验。
'web.dark_mode_variables': [],
# 定义:暗模式变量
# 使用场景:定义用于暗模式的SCSS变量,方便开发者在暗模式中使用一致的颜色和样式。
'web._assets_primary_variables': [],
# 定义:主要资产变量
# 使用场景:定义主要的SCSS变量,用于整个应用程序中的颜色、字体和其他样式。
'web._assets_secondary_variables': [],
# 定义:次要资产变量
# 使用场景:定义次要的SCSS变量,用于特定模块或组件中的样式。
'web._assets_helpers': [],
# 定义:辅助资产
# 使用场景:包含辅助的SCSS和JS文件,提供常用的工具类和函数。
'web._assets_bootstrap': [],
# 定义:Bootstrap 资产
# 使用场景:包含Bootstrap框架的CSS和JS文件,用于响应式设计和界面布局。
'web._assets_backend_helpers': [],
# 定义:后端辅助资产
# 使用场景:用于后端开发的辅助SCSS和JS文件,提供常用的工具类和函数。
'web._assets_frontend_helpers': [],
# 定义:前端辅助资产
# 使用场景:用于前端开发的辅助SCSS和JS文件,提供常用的工具类和函数。
'web.frontend_legacy': [],
# 定义:前端遗留资产
# 使用场景:包含前端的遗留CSS和JS文件,通常用于兼容老旧系统或过渡期间使用。
'web.assets_tests': [],
# 定义:测试资产
# 使用场景:包含测试环境中需要的CSS和JS文件,用于开发和调试。
'web.tests_assets_common': [],
# 定义:公共测试资产
# 使用场景:测试环境中常用的公共CSS和JS文件,适用于所有测试用例。
'web.tests_assets': [],
# 定义:测试资产
# 使用场景:包含特定测试用例所需的CSS和JS文件。
'web.qunit_suite_tests': [],
# 定义:QUnit 测试套件资产
# 使用场景:包含用于QUnit测试框架的CSS和JS文件,适用于前端单元测试。
'web.qunit_mobile_suite_tests': [],
# 定义:QUnit 移动测试套件资产
# 使用场景:包含用于QUnit移动测试的CSS和JS文件,专门用于移动端的单元测试。
'web.frontend_legacy_tests': [],
# 定义:前端遗留测试资产
# 使用场景:包含前端遗留代码的测试CSS和JS文件,用于兼容性测试。
},
}
这里给大家一个偷懒模板,真正开发中不一定所有key都要写!
{
'name': 'Demo Name',
'version': '17.0.1.0.0',
'summary': 'A short summary of the module',
'description': """
This module provides custom features for my Odoo instance.
""",
'author': 'Your Name',
'website': 'http://www.yourwebsite.com',
'category': 'Category Name',
'depends': [],
'data': [
'security/ir.model.access.csv',
'views/demo_views.xml',
'views/templates.xml',
'data/demo_data.xml',
'reports/demo_reports.xml',
],
'demo': [
'demo/demo_demo.xml',
],
'license': 'LGPL-3',
"assets": {
"web.assets_backend": [
"demo_name/static/src/js/demo_name.js",
],
},
}
小结
多写多敲多思考,毕竟,知己知彼才能看懂源码。
Tip:本人才学尚浅,如有纰漏,还请不吝赐教!