【odoo】详细解读odoo模块__manifest__文件

概要

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

  • 15
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值