你已經問了一個很真實的查詢:
正如你在PHP中說,我們遵循這個模式,同時使線路和控制器:
http://host/ {controller}/{method}/{parameter}
。
作出這種模式的主要目的是使唯一的URI爲 每個資源。
這裏odoo裏沒有這樣的關於把控制器/方法放在url路由中的限制。
odoo給你的自由/權力,使路線和你知道的權力總是有責任, 所以它的開發人員的責任,以確保沒有兩個路線相互衝突。
同時url也應該SEO友好。
在我們的團隊我們通常會流模塊/型號/方法。
例如: 我有:
- 模塊名
academy
- 模塊有一個模型的教師[
_name='academy.teacher'
]
- 模塊有一個模型學生[
_name='academy.student'
]
- 模塊具有模型課程[
_name='academy.course'
]
- 用於顯示列表o ˚F教師,我們創建一個類似的 URL模式網格視圖:
/academy/teachers
- 爲了顯示列表中的個別老師,我們創建URL 樣模式:
/academy/teacher
- 創建老師:
/academy/teacher/create
- 爲了顯示列表學生在網格視圖中,我們創建像 URL模式:
/academy/students
- 爲了顯示列表中的個別老師,我們創建URL 樣模式:
/academy/student
- 對於在網格視圖中顯示的課程列表中,我們創建一個類似
/academy/courses
- 的 URL模式對於顯示列表,我們創建一個類似的URL 圖案中單獨老師:
/academy/course
讓我們一個一個活生生的例子:
爲了顯示順序/shop/cart
@http.route(['/shop/cart'], type='http', auth="public", methods=['POST'], website=True)
def cart(self, product_id, add_qty=1, set_qty=0, **kw):
pass
對於更新訂單/shop/cart/update
:
@http.route(['/shop/cart/update'], type='http', auth="public", methods=['POST'], website=True)
def cart_update(self, product_id, add_qty=1, set_qty=0, **kw):
pass
在情況下,如果你想創建一個JSON請求的處理程序type='json'
爲 店購物車更新/shop/cart/update_json
@http.route(['/shop/cart/update_json'], type='json', auth="public", methods=['POST'], website=True)
def cart_update_json(self, product_id, line_id=None, add_qty=None, set_qty=None, display=True):
pass
至於你說的你是一個新手,我也建議你幾個有用的鏈接:
- FOR ODOO GuideLine.
- FOR ODOO WEBSITE MODULE
- FOR ODOO Http handler
- FOR ODOO BACKED MODULE
希望這可以幫助你在低估ODOO的URL模式。
感謝Prakash,我在該控制器下創建了一個名爲test的自定義模塊,模型,模板在控制器,模型,數據文件夾下。在我的__openerp__.py中,數據字段被設置爲'data/templates.xml'。現在我使用return http.request.render('test.listing',{})從控制器呈現模板。在我的data/templates.xml中,我有
hello
上面有數據和openerp標籤。當我運行這個我得到錯誤'QWebTemplateNotFound:在系統中找不到外部ID:test.listing'。你能幫我解答我做錯了什麼嗎?萬分感激。 – user280960包含data/templates.xml。在opener.py中,並重新啓動您的服務器 – prakash
嗨Prakash,我已經在__openerp__.py文件中包含:'data':['data/templates.xml'] – user280960