重建数据库后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
相关产品推荐
相关产品推荐

