网页控制器 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()
肖巧龙

浙公网安备 33010602011771号