Webコントローラ

コントローラ

コントローラは :class:`~odoo.modelのように拡張性を提供する必要があります。 odel`は、前提条件(ロードされたモジュールを持つデータベース)と同じメカニズムを使用できない場合がある (e. をクリックします。データベースが作成されていないか、データベースが選択されていません。

このため、コントローラはモデルとは別の独自の拡張メカニズムを提供します。

コントローラは 継承 から Controller によって作成されます。ルートは、 :func:`~odoo.http.route`で飾られたメソッドによって定義されます:

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

コントローラを*オーバーライド*するには、 :ref:はクラスから <python:tut-inheritance>を継承し、関連するメソッドをオーバーライドします。必要に応じて再公開します。

class Extension(MyController):
    @route()
    def handler(self):
        do_before()
        return super(Extension, self).handler()
  • :func:`~odoo.http.route`で飾る方法はメソッド(およびルート)を表示させるために必要です: メソッドが装飾せずに再定義された場合、"未公開"になります。

  • すべてのメソッドのデコレータが結合されます。オーバーライドメソッドのデコレータが引数を持たない場合、以前のものはすべて保持されます。 指定された引数はEを上書きします .:

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

    /some_url をパブリック認証からユーザーに変更します (ログインが必要)

API

ルーティング

リクエスト

リクエストオブジェクトはリクエストの開始時に odoo.http.request に自動的に設定されます。

回答