网页控制器 Web Controllers
网页控制器 Web Controllers
控制器
控制器需要像模块一样提供扩展,但是不能使用相同的机制,因为有时候前提条件(附有模块的数据库)尚不可用(例如还未创建或者选择数据库)。因此,控制器具有自己的扩展机制,这不同于模型的机制:控制器通常通过*Controller*继承,通过*route()*装饰器定义路由:
class MyController (odoo.http.Controller):#继承controller定义控制器
@route'/some_url',auth'public')
#装饰器路由访问方法,并指明访问方式:公开还是需要用户登陆
def handler(self):
return stuff()
为了覆盖控制器,请从其类继承并覆盖相关的方法,并在必要时公开它们:
classExtension(MyController):
@route()
def handler (self):
do_before()
return super(Extension,self).handler()
必须使用route()装饰器才能使方法(和路径)可见:如果在未装饰的情况下重新定义了该方法,则该方法会成为“未发布”状态。组合所有方法的装饰器,如果覆盖方法的装饰器没有参数,则所有先前的装饰器都将保留,任何提供的参数将覆盖先前定义的装饰器。
lass Restrict(MyController):
@route(auth 'user')
def handler(self):
return super(Restrict,self).handler()
肖巧龙
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示