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

肖巧龙

posted @ 2023-03-09 09:37  中亿丰数字科技  阅读(44)  评论(0)    收藏  举报