微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将装饰器添加到动态生成的方法中

如何解决将装饰器添加到动态生成的方法中

代码创建并向类添加方法

def add_controller(self,cls,i,return_url):
    @http.route(return_url,type="http",auth="public",website=True)  # Very important,missing!
    def innercontroller(self,**kw):
        print("Helloo here with ID: " + i)

    innercontroller.__name__ = "controller_html_form_id_" + i  # Name of the new method
    setattr(cls,innercontroller.__name__,innercontroller)
    print("Done")

def create(self):
    self.add_controller(HtmlFormController,return_url)

代码运行正常,生成方法,可惜没有装饰器。 我想用不同的 return_url 创建多个方法,这意味着每个装饰器都会不同。

编辑:

最后,我想要一个这样的方法

@http.route("/custom13",website=True)
def controller_html_form_id_13(slef,**kw):
    return "Example method!"

那么当用户调用路由 example.com/custom13 时,他应该会在浏览器中看到 Example method!

唯一缺少的是装饰器@http.route(...)

如何将这个装饰器添加生成方法中?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。