0

我想使用以下在渲染任何页面时调用的方法。如果我在 http.route 中传递 '/' 它将只调用主页而不是其他像 '/shop'、'/blog' 等。还想在 http.route('URL 的基础上传递动态模板渲染作为回报')。

@http.route(['/'], type='http', auth="public", website=True) def cusotm_controller_func(self, **kwargs): values= { # values which is passing in template } return request.render('website.homepage', values)

谁能帮我吗?谢谢。

4

1 回答 1

0

也许您需要在另一个时刻调用您的函数,例如在模型注册表(池)加载之后。_register_hook您可以通过在模型中实现该方法来做到这一点。Odoo 将始终在您的模型中调用该方法以允许您初始化任何您想要的,但您只有 self 和 cr 参数。

也许有帮助

感谢来自odoo论坛。

解决方案 :

控制器在 openerp.http.controllers_per_module 字典中注册自己(参见代码)......所以您可以使用模块名称和控制器名称获取控制器实例:

from odoo.http import controllers_per_module

controller_instance = None
for name,instance in controllers_per_module.get('my_module'):
    if name.endswith('my_module.controller.name'):
        controller_instance = instance
        break
if controller_instance != None:
    controller_instance.a_function(*args)
于 2018-04-02T07:38:57.890 回答