Webvezérlők

Vezérlők

A vezérlőknek biztosítaniuk kell a kiterjeszthetőséget, hasonlóan a Model-hez, de nem használhatják ugyanazt a mechanizmust, mivel az előfeltételek (egy adatbázis betöltött modulokkal) még nem állhatnak rendelkezésre (pl. nincs még létrehozva adatbázis, vagy nincs kiválasztva adatbázis).

A vezérlők ezért saját kiterjesztési mechanizmust biztosítanak, amely elkülönül a modellekétől:

A vezérlőket a Controller öröklésével hozzák létre. Az útvonalakat a route() dekorátorral ellátott metódusok határozzák meg:

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

Egy vezérlő felülírásához örökölje annak osztályát, és írja felül a releváns metódusokat, szükség esetén újra kitéve azokat:

class Extension(MyController):
    @route()
    def handler(self):
        do_before()
        return super(Extension, self).handler()
  • decorating with route() is necessary to keep the method (and route) visible: if the method is redefined without decorating, it will be „unpublished”

  • az összes metódus dekorátorai kombinálódnak, ha a felülíró metódus dekorátora nem tartalmaz argumentumot, az összes korábbi megmarad, bármely megadott argumentum felülírja a korábban meghatározottakat, pl.:

    class Restrict(MyController):
        @route(auth='user')
        def handler(self):
            return super(Restrict, self).handler()
    

    megváltoztatja a /some_url-t a nyilvános hitelesítésről felhasználóra (bejelentkezést igényel)

API

Útvonalkezelés

Kérelem

A kérés objektum automatikusan beállításra kerül az odoo.http.request-en a kérés kezdetén.

Válasz