<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                **轉載請注明原文地址:[http://www.cnblogs.com/ygj0930/p/7155356.html](http://www.cnblogs.com/ygj0930/p/7155356.html "view: odoo10學習筆記十七:controller")** 一:controller簡述 odoo里面的controller相似于springMVC,也是根據url來控制請求,把請求處理映射到具體某個方法上的。 類比于springmvc中,根據請求,在請求處理方法中處理數據,然后控制view頁面跳轉。 在odoo中的controller也是類似的工作原理: 在view層,新建xml文件,定義視圖模版; 然后在controller目錄下,新建controller類,在其中,定義請求處理方法,在方法上方通過 @http:route('url',auth='public/user') 控制請求映射; 在方法中,處理數據,然后通過 http.request.render('模塊名.視圖模版id',視圖模版所需參數列表......) 把參數傳遞給視圖模板并渲染出頁面,然后返回客戶端作響應。 二:一個簡單的課程列表展示 1:首先,新建一個視圖模板文件 views/template.xml ~~~ odoo> data> template id="template_index"> t t-foreach="courses" t-as="course"> p>t t-esc="course"/>p> t> template> data> odoo> ~~~ 模版文件解析: id為:template_index 模版內容:遍歷 courses,并打印輸出。 2:在manifest中注冊視圖模版 ~~~ 'data': [ 'views/template.xml', ], ~~~ 3:在controller文件夾下,新建controller.py ~~~ # -*- coding: utf-8 -*- from odoo import http class Controller(http.Controller): @http.route("/open/courses/",auth="public") def index(self,**kw): return http.request.render("模塊名.template_index",{'courses':['odoo','python','bootstarp']}) ~~~ controller內容: 繼承 http.Controller類定義控制器; 通過 @http.route(url,auth=)控制請求映射,以及訪問權限(公開 or 需要登陸) 最后,通過 http.request.render('模塊名.視圖模板id',{'參數名'(與視圖模版中遍歷的參數一致):參數值}) ?傳參并渲染得到響應頁面并返回。 4:啟動odoo,安裝/更新模塊,然后通過 ?ip:8069/url ?發起訪問,即可到達響應頁面。(url為上面定義控制器時的映射路徑) 三:使用ORM為視圖文件傳遞內容 繼承自models.Model而定義的類默認具有了odoo的ORM接口,也就是說,該類的所有實例對象都會自動保存到數據庫中。 根據這個特性,我們可以這樣往視圖模版傳遞數據: 定義一個數據模型; 在odoo中創建該數據模型的一系列紀錄(一條記錄一個實例對象); 在視圖文件中,遍歷、使用對象,通過 ?對象.字段名 ?調用紀錄的具體字段內容; 最后,在控制器中,使用環境上下文,查找該數據模型的所有紀錄,然后傳參即可。 在視圖文件中遍歷對象,通過對象.字段名調用數據: t t-foreach="courses" t-as="course"> p>t t-esc="course.id"/>p> p>t t-esc="course.name"/>p> t> 在控制器中,先用環境上下文獲取數據模型的所有紀錄,得到一個紀錄集。然后通過 紀錄集.search()函數,返回一個紀錄列表,傳遞給視圖模板: def index(self,**kw): #通過環境上下文獲取數據模型的所有紀錄 courses=http.request.env['openacademy.course'] #紀錄集.search(),返回紀錄列表傳遞給視圖模版進行渲染 return http.request.render("openacademy.template_index",{'courses':courses.search([])}) 最后,更新模塊,在模塊中創建一些紀錄,然后通過url訪問,查看紀錄集遍歷結果。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看