You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

重建数据库后Odoo自定义模块所有API返回404错误求助

解决Odoo自定义模块API 404问题(删库重建后)

核心排查与修复步骤

1. 确认模块是否完成安装

  • 登录Odoo后台,进入应用模块,搜索自定义模块名称,确认状态为「已安装」。若未找到,检查模块根目录下的__manifest__.py:
    • 确保'installable': True未被注释或设为False
    • 确认depends字段中的依赖模块(如base、web)已在新数据库中安装
  • 针对新数据库,需执行安装命令而非更新:
    docker exec -it odoo-app odoo -d <db_name> -i <custom_module> --stop-after-init
    

2. 校验API路由定义

  • 检查自定义模块中的控制器代码,确保路由装饰器格式正确,示例:
    from odoo import http
    from odoo.http import request
    import json
    
    class CustomAPIController(http.Controller):
        @http.route('/api/custom/test', auth='public', methods=['GET'], csrf=False)
        def test_endpoint(self):
            return request.make_response(
                json.dumps({'result': 'success'}),
                headers={'Content-Type': 'application/json'}
            )
    
  • 核对Thunder Client的请求URL与路由路径完全一致,避免大小写、多/少斜杠这类低级错误

3. 排查模块加载日志

  • 查看Odoo容器启动日志,排查模块加载时的报错:
    docker logs odoo-app | grep <custom_module>
    
  • 若日志显示依赖缺失、语法错误,先修复对应问题后重新安装模块

4. 清除路由缓存

  • 直接重启Odoo容器清除缓存:
    docker restart odoo-app
    
  • 若为Odoo 16及以上版本,可强制刷新路由表:
    docker exec -it odoo-app odoo -d <db_name> --load=base,web --update=web --stop-after-init
    

5. 验证外部访问配置

  • 若使用Nginx等反向代理,确认代理规则未拦截自定义API路由
  • 核对docker-compose中Odoo容器的端口映射(默认8069),确保Thunder Client请求的端口与映射端口一致

错误提示说明

"The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again."
该提示表明Odoo未匹配到对应路由,核心原因集中在:模块未安装、路由定义错误、缓存未清除三类场景

内容的提问来源于stack exchange,提问作者Vĩnh Thuận

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 09:32:03