Odoo 开发前台页面和模板引擎的使用


Odoo 开发前台页面和模板引擎的使用

www.chinamaker.net 2017-06-20 09:50:24 admin

方式一:使用Qweb

带站点基础框的页面

后台代码

1.      @http.route('/trial', auth='public', type='http', website=True)

2.      def trial(self, **kw):

3.          # ...

4.          values = {

5.              'plan': trial_plan,

6.          }

7.   

8.          return request.render('saas_portal.try_trial', values)

模板

1.          

  • 可以看到模板首先使用了website.layout 这样页面内容就放置在一个公共的站点基础框内
  • Qweb模板引擎使用xml写法,标签大多以 t 开头
  • Qweb模板定义的xml文件要加入到模块定义文件的data组下,随模块安装后保存到数据库的视图表ir_ui_view,渲染页面时从数据库读取

完全自定义的页面

后台代码

1.      @http.route('/payment/order_status_show', type='http', auth='public', website=True, methods=['GET'], csrf=False)

2.      def order_status_show(self, **params):

3.          # ...

4.          values = {        

5.              'transaction': tx,             

6.              'order': order[0].id           

7.          }

8.          return request.render("payment.order_status_show", values)

模板

1.          

方式二:使用Jinja2

odoo数据库创建页面为例

后台代码

1.  import jinja2

2.   

3.  loader = jinja2.PackageLoader('odoo.addons.web', "views")

4.  env = jinja2.Environment(loader=loader, autoescape=True)

5.   

6.  class Database(http.Controller):

7.   

8.      def _render_template(self, **d):

9.          d.setdefault('manage',True)

10.        d['insecure'] = odoo.tools.config['admin_passwd'] == 'admin'

11.        d['list_db'] = odoo.tools.config['list_db']

12.        d['langs'] = odoo.service.db.exp_list_lang()

13.        d['countries'] = odoo.service.db.exp_list_countries()

14.        # databases list

15.        d['databases'] = []

16.        try:

17.            d['databases'] = http.db_list()

18.        except odoo.exceptions.AccessDenied:

19.            monodb = db_monodb()

20.            if monodb:

21.                d['databases'] = [monodb]

22.        return env.get_template("database_manager.html").render(d)

23. 

24.    @http.route('/web/database/manager', type='http', auth="none")

25.    def manager(self, **kw):

26.        return self._render_template(

模板(节选部分)

1.    

    

 

2.      

         

 

3.        

 

 

4.          

5.          

6.        

 

7.      

                    

 

8.    

 

9.    

    

 

10.   

         

 

11.     

 

 

12.        

13.       

14.     

 

15.   

 

16. 

 

17. 

 

18.   

19.   

20.   

21. 

 

22. 

 

23.   

 

24.     

 

25.       

26.       

31.     

 

32.     

 

33.         

34.         

40.       

 

41.   

 

42. 

 

43. 

 

44.   

 

45.     

46.       

47.        Load demonstration data

48.        (Check this box to evaluate Odoo)

49.     

50.    

 

51. 

 

使用Jinja2引擎的模板文件直接在文件系统里,渲染页面时不需要读数据库,相对快一些,但管理不如Qweb可以直接在线编辑那样方便


相关标签 TAG :  前台  模板  页面  Qweb  Jinja2  


苏州远鼎

运用前沿科学技术,苏州远鼎信息技术有限公司以开源管理软件产品为核心,为企业和政府组织提供软件及服务,是OpenERP(Odoo)专业服务商,中国开源管理软件服务市场的领跑者。

Read More

远鼎产品

联系远鼎

  • 苏州工业园区星湖街328号22栋301
  • +86-0512-69361217
  • odoo@chinamaker.net
  • www.chinamaker.net