在开发中经常遇到下载文件的需求,odoo中也提供了一个ir.actions.act_url动作,可以跳转打开一个下载链接,实现下载需求。
但是实际使用中还是有点缺陷
1.开发繁琐,需要写一个单独的跳转动作方法,再写的一个专门的下载接口
2.体验不友好,在弹窗向导中的按钮执行url动作跳转后不会关闭原始的弹窗
3.无法做到文件下载错误提醒,在生成文件内容之中可能会出现错误,异常检查如果写在跳转方法里,此时文件还未生成无法预知报错,只能放在下载方法中,在下载方法中最终返回必须是一个完整的页面或者文件,无法做到odoo报错提示
基于以上问题决定自己写一个下载文件的动作,可以直接通过按钮方法返回下载内容。
使用方法
def download_file(self):
# your_code...
file_content = b''
return {
'type': 'ir.actions.act_download',
'file_name': 'test.xlsx', # your file name
'file_type': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', # your file type
'file_data': base64.encodebytes(file_content),
}
仓库地址:https://github.com/grey27/grey27_addons/tree/14.0/web_download_action
网友评论