如何在Odoo中正确弹出成功提示消息?解决弹窗标题异常问题
解决Odoo成功提示弹窗显示服务器错误标题的问题
哦,这个问题我太熟了!你用raise osv.except_osv来弹出成功提示确实会踩这个坑——因为这个方法本质是抛出异常,Odoo框架会默认把异常弹窗的主标题硬设成"Odoo Server Error",哪怕你写了"Success"当第一个参数也没用,毕竟异常是用来处理错误场景的,不是用来做成功提示的。
给你几个更合适的替代方案,分版本来说:
方案1:Odoo 11及以上版本(推荐)
如果用的是较新的Odoo版本,优先用官方提供的成功通知API,体验更符合系统风格:
右上角轻量通知(不阻塞操作)
这种方式会在页面右上角弹出一个短暂的成功提示,用户不用点击确认,体验很流畅:
# 直接调用用户的成功通知方法 self.env.user.notify_success(message="Invitation is successfully sent")
自定义标题的弹窗(需要用户确认)
如果一定要弹窗形式,用客户端动作触发官方的通知组件,能完全自定义标题和样式:
return { 'type': 'ir.actions.client', 'tag': 'display_notification', 'params': { 'title': 'Success', 'message': 'Invitation is successfully sent', 'type': 'success', # 指定样式为成功(绿色) 'sticky': False, # 弹窗自动消失,设为True则需要手动关闭 } }
方案2:Odoo 8-10旧版本
对于旧版本,你可以用客户端动作来触发自定义弹窗,避免抛出异常:
from openerp.tools.translate import _ # 记得引入翻译工具 return { 'type': 'ir.actions.client', 'tag': 'action_warn', 'params': { 'title': _('Success'), 'text': _('Invitation is successfully sent'), 'sticky': False, } }
这个弹窗的标题会是你设置的"Success",不会再显示服务器错误。
避坑提醒
千万别再用异常来处理成功场景啦!异常是用来捕获和处理错误的,用它来做成功提示不仅会导致标题错误,还会在后台日志里留下不必要的异常记录,不利于排查真正的问题。
内容的提问来源于stack exchange,提问作者user11796003
相关产品推荐
相关产品推荐

