Bộ điều khiển web

Bộ điều khiển

Bộ điều khiển cần cung cấp khả năng mở rộng, giống như Model, nhưng có thể chưa có sẵn cơ chế tương tự như các điều kiện tiên quyết (cơ sở dữ liệu có mô-đun được tải) (ví dụ: chưa có cơ sở dữ liệu nào được tạo hoặc không có cơ sở dữ liệu nào được chọn).

Do đó, bộ điều khiển cung cấp cơ chế mở rộng riêng, tách biệt với cơ chế của mô hình:

Bộ điều khiển được tạo bởi inheriting từ Controller. Các tuyến đường được xác định thông qua các phương thức được trang trí bằng route():

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

Để ghi đè một bộ điều khiển, inherit từ lớp của nó và ghi đè các phương thức liên quan, hiển thị lại chúng nếu cần:

class Extension(MyController):
    @route()
    def handler(self):
        do_before()
        return super(Extension, self).handler()
  • trang trí bằng route() là cần thiết để giữ cho phương thức (và tuyến đường) hiển thị: nếu phương thức được xác định lại mà không trang trí, nó sẽ "không được xuất bản"

  • trình trang trí của tất cả các phương thức được kết hợp, nếu trình trang trí của phương thức ghi đè không có đối số thì tất cả các đối số trước đó sẽ được giữ lại, mọi đối số được cung cấp sẽ ghi đè các đối số được xác định trước đó, ví dụ:

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

    sẽ thay đổi /some_url từ xác thực công khai thành người dùng (yêu cầu đăng nhập)

API

Lộ trình

Lời yêu cầu

Đối tượng yêu cầu được tự động đặt trên odoo.http.request khi bắt đầu yêu cầu.

Phản ứng