IT学习站-137zw.com

more +资源更新Forums

more +随机图赏Gallery

10节课让你成为滚床单高手  强烈推荐 屌丝的福音10节课让你成为滚床单高手 强烈推荐 屌丝的福音
Spring Boot编程思想(核心篇) PDF 电子书 百度云 网盘下载Spring Boot编程思想(核心篇) PDF 电子书 百度云 网盘下载
最新流出的传智博学谷黑马python5.0课程最新流出的传智博学谷黑马python5.0课程
MySQL视频教程价值288元MySQL面试指南视频教程 百度云 百度...MySQL视频教程价值288元MySQL面试指南视频教程 百度云 百度...
python基础教程编程数据分析excel源代码pandas视频教学数据处理python基础教程编程数据分析excel源代码pandas视频教学数据处理
价值388元 Spark Streaming实时流处理项目实战视频教程 百度云盘价值388元 Spark Streaming实时流处理项目实战视频教程 百度云盘

odoo12从零开始:二、1)个性化定制odoo12之修改数据库创建页面

odoo12从零开始:二、1)个性化定制odoo12之修改数据库创建页面

[复制链接]
慧眼识英雄1 | 显示全部楼层 发表于: 2019-11-14 08:20:00
慧眼识英雄1 发表于: 2019-11-14 08:20:00 | 显示全部楼层 |阅读模式
查看: 118|回复: 0
剧情回顾

上一文章,我们已经成功运行了odoo12,并访问localhost:8069看到如下界面:
odoo12从零开始:二、1)个性化定制odoo12之修改数据库创建页面  技术博客 720321-20190906161212365-1638346718


我们还没有创建数据库,但是我们发现,数据库管理页面的logo是odoo,数据库页面全是英文的,对于我们国内用户来说,这是不太友好的。我们想要自定义这个数据库页面,有没有办法?答案是肯定的。
本节代码
探索数据库页面

odoo12从零开始:二、1)个性化定制odoo12之修改数据库创建页面  技术博客 720321-20190906161758115-672358932




      我们在Chrome浏览器右键检查odoo的logo,发现它的url是"/web/static/src/img/logo2.png",也就是说,它处于web模块下的static目录,我们在odoo12/addons中找到web模块static/src/img下的logo2.png文件,确认一下,果然是这个logo。再在web模块下搜索logo2.png,发现引用文件是web/views里面的database_manager.html,发现这个文件也就是我们上面看到数据库管理页面
      我们直接替换这个logo或者直接更改database_manager.html是否可以替换掉原生logo或者其他信息呢?答案是可以的,但是odoo的开源协议并不允许我们这么做。
  我们继续在web模块下搜索database_manager.html,发现在controllers/main.py文件下Database类中的_render_template方法便是对数据库管理页面进行渲染。
  那么我们要如何对这个页面进行修改呢?
  有经验的朋友可能会说,我们写一个模块,在controller中继承这个Database类,重写_render_template方法,就可以实现这个对页面的重写。
  这个方法在数据库完成创建并安装所写模块后,是可以生效的!我们对登录界面等的重写也将采用继承修改的办法。但是,在第一次运行odoo时,还没有任何的数据库,也不可能安装任何的模块,所以此时这种方法是行不通的。那我们要怎么做呢?这就涉及到python运行时动态改变类的方法——猴子补丁(Monkey Patch)
猴子补丁(Monkey Patch)

简要介绍一下:上述便是monkey patch的基本概念,如果您有兴趣,可以自行学习深入了解。现在我们用这个方法对我们的数据库页面进行修改。
创建模块,在运行时替换数据库页面渲染方法

我们先在主目录下新建my_addons目录,在my_addons目录下新建一个模块base_customize,将web下的数据库html复制到template下,在staic/src/img中放入需要替换的favicon.ico和logo2。细心的朋友可能会注意到下面的init和manifest文件,现在先不用管它,没有也不影响。
odoo12从零开始:二、1)个性化定制odoo12之修改数据库创建页面  技术博客 720321-20190906164933358-1264098470


紧接着在主目录下新建core目录,新建patch目录和其目录下的database.py文件和__init__.py文件
odoo12从零开始:二、1)个性化定制odoo12之修改数据库创建页面  技术博客 720321-20190906170621358-399017719


database.py我们将_render_template重写,只修改了env的指定环境为my_addons/base_customize/template,这样数据库管理页面就更改成了指定环境下的database_manager.html文件
patch_database方法运行时修改Database._render_template方法为我们重新定义的方法。
然后在同级__init__.py中引入patch_database文件最后,我们修改主目录下的运行文件set-up.py代码大意: 预加载web模块,引入core/patch,调用monkey_patch方法进行运行时替换
最后,我们修改my_addons/base_customize/template下的html文件,重启服务器即修改成功。
odoo12从零开始:二、1)个性化定制odoo12之修改数据库创建页面  技术博客 720321-20190906172418212-1516745613
项目启动日志patch

最后,与patch同级还有一个__init__文件,内容如下:
odoo12从零开始:二、1)个性化定制odoo12之修改数据库创建页面  技术博客 720321-20190906172915352-1782203387

再次修改set-up.py,引入并运行init_patch,重启服务器,你可以看到patch效果
odoo12从零开始:二、1)个性化定制odoo12之修改数据库创建页面  技术博客 720321-20190906173224355-1578567124

声明

转载请注明出处,文章如有雷同(不大可能吧hh)或者侵权,请联系删除。
有任何问题,联系邮箱:26476395@qq.com

来源:http://www.137zw.com
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
137zw.com IT学习站致力于免费提供精品的java技术教程和python技术教程,CCNA书籍/资料/CCNP书籍/资料教程/CCIE书籍/资料/H3C学习/认证/一级建造师考试/微软学习/认证/包括基础教程和高级实战教程,同时也提供分享网站源码下载和互联网相关一系列的技术教程,我们想做的就是让知识分享更有价值!(IT学习站官方唯一域名地址:www.137zw.com 请谨防假冒网站!)本站所有资源全部收集于互联网或网友自行分享,分享目的仅供大家学习与参考,如无意中侵犯您的合法权益,请联系本站管理员进行删除处理!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

浙ICP备19022368号-1|Archiver|手机版|IT学习站-137zw.com

GMT+8, 2020-7-10 23:44 , Processed in 6.202746 second(s), 34 queries .

快速回复 返回顶部 返回列表