gpt4 book ai didi

python - 奥多。在 werkzeug 中动态注入(inject) url

转载 作者:太空宇宙 更新时间:2023-11-04 00:55:13 25 4
gpt4 key购买 nike

Odoo 有通过装饰器定义路由的方式。这几乎没问题,但是..我们想要编写模块,这将允许我们进行动态重写。

https://www.odoo.com/documentation/8.0/reference/http.html - 在这里我们可以找到添加路线的标准方法。

看起来像:

class MyController(openerp.http.Controller):
@route('/some_url', auth='public')
def handler(self):
return stuff()

理想情况下,我们希望找到 odoo 为 werkzeug 存储 RouteMap 的位置。

我也试过以如下方式向 Controller 添加装饰方法:

def my_redirect(new_url):
t = lambda x: werkzeug.utils.redirect(new_url, 301)
return t

MyController.test = http.route('/old_url/')(my_redirect('/new_url/'))

但在这种情况下我们得到错误 here .

最佳答案

Odoo 9 路由的引用文档是 here ,以防万一。

Odoo 计算网络路由并将其存储在 routing_map 中(计算为 here in 8.0there in 9.0)。该 map 通过 routing_map() 方法(8.09.0)延迟计算并暴露给 ir.http 模型中的扩展模块。 ir.http._find_handler()方法在请求处理过程中被ir.http._dispatch()调用,在routing_map中定位匹配的路由>.

您可以覆盖/扩展其中任何一个来实现您自己的动态路由,类似于 web 模块的做法。


后备路由:动态处理与现有“静态”规则不匹配的请求的一个有趣的替代方法是 _handle_exception() method ir.http。每当请求处理阶段发生异常时都会调用它,包括未找到匹配路由时。它返回的任何内容都将用作响应。

web 模块将其扩展为:

关于python - 奥多。在 werkzeug 中动态注入(inject) url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35445449/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com