概要
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:本人才学尚浅,如有纰漏,还请不吝赐教!