網(wǎng)站開(kāi)發(fā)如何創(chuàng)建動(dòng)態(tài)路由?考慮擁有一個(gè)“商店”模塊?開(kāi)發(fā)物品價(jià)格系統(tǒng)查詢網(wǎng)站程序
2023-01-03
動(dòng)態(tài)路由
在 Odoo 中,控制器用于配置前端模塊。 這些前端模塊與后端模塊集成在一起。 例如,如果想要將銷(xiāo)售訂單的詳細(xì)信息帶到網(wǎng)站上網(wǎng)站開(kāi)發(fā)網(wǎng)站開(kāi)發(fā),他們不能使用 Odoo 中的“模型”功能。 但是,他們可以使用控制器從后端獲取銷(xiāo)售訂單詳細(xì)信息。 控制器通過(guò)站點(diǎn)銷(xiāo)售、站點(diǎn)博客和站點(diǎn)論壇等模塊擴(kuò)展其功能。 使用控制器網(wǎng)站模板,可以輕松定義任何 URL 和網(wǎng)頁(yè)之間的鏈接。
在網(wǎng)站開(kāi)發(fā)中,需要?jiǎng)?chuàng)建具有動(dòng)態(tài) URL 的頁(yè)面。 例如,在網(wǎng)上商店中,每個(gè)產(chǎn)品都有一個(gè)鏈接到不同 URL 的唯一產(chǎn)品詳細(xì)信息視圖。
如何創(chuàng)建動(dòng)態(tài)路由?
考慮擁有一個(gè)“商店”模塊并為每個(gè)產(chǎn)品添加一個(gè)產(chǎn)品頁(yè)面。
按照以下步驟為您商店中的選定產(chǎn)品創(chuàng)建詳細(xì)信息頁(yè)面。
步驟1:
在“商店”模塊控制器 (main.py) 中為產(chǎn)品詳細(xì)信息頁(yè)面創(chuàng)建一個(gè)新控制器,如下所示:
@http.route('/store/', type='http', auth="user", website=True)
def product_details(self, product):
values = {
'product': product,
}
return request.render('store.product_details', values)
我們?yōu)楫a(chǎn)品詳情頁(yè)面創(chuàng)建了動(dòng)態(tài)路由。 在這條路線上,我們添加 . 它接受整數(shù) URL 作為 //10。 當(dāng)訪問(wèn)這個(gè) URL 時(shí),Odoo 將這個(gè)整數(shù)視為 . 模型,Odoo 獲取相應(yīng)的數(shù)據(jù)并將其作為參數(shù)傳遞給函數(shù)。 因此,當(dāng)從瀏覽器訪問(wèn) //10 時(shí),() 函數(shù)中的參數(shù)將具有 . ID 為 10 的模型。我們采用此產(chǎn)品記錄集并呈現(xiàn)一個(gè)名為 . 產(chǎn)品詳情。
路由支持域過(guò)濾。 例如網(wǎng)站制作,如果你想有條件地限制某些產(chǎn)品,你可以通過(guò)添加到域路由來(lái)實(shí)現(xiàn)。 讓我們看看如何限制對(duì) ID 為 5 的產(chǎn)品的訪問(wèn):
store/"
Odoo 用于處理 HTTP 請(qǐng)求。 Odoo 支持路由的所有功能。 所以你可以使用類似于以下的路線:
/store/ # 只接受整數(shù)值。
/store/ # 接受選擇的值。
/store/ # 接受字符串值。
/store// # 在一個(gè)路由中接受多個(gè)值。
第2步:
為產(chǎn)品的詳細(xì)視圖創(chuàng)建新模板
(.xml):
我們創(chuàng)建了一個(gè)名為 QWeb 的新 QWeb 模板,用于呈現(xiàn)產(chǎn)品詳細(xì)信息頁(yè)面。 這是一個(gè)簡(jiǎn)單的產(chǎn)品描述頁(yè)面。在這個(gè)頁(yè)面上,我們添加了一些動(dòng)態(tài)
和標(biāo)簽。 所以我們可以使用傳遞的id來(lái)使用商品詳情頁(yè)的內(nèi)容。
第 3 步:
將鏈接或按鈕添加到商店的當(dāng)前視圖。 單擊該按鈕會(huì)將您重定向到產(chǎn)品的詳細(xì)視圖。
Goto Product
然后您將在商店中看到轉(zhuǎn)到按鈕。 單擊它將打開(kāi)相關(guān)的產(chǎn)品詳細(xì)信息。