Odoo二次开发使用细节

1、路由

 @http.route('/product/service/', auth='public', methods = ['get', 'post'], csrf = False)
    def reduce_product(self, **kw):

methods:指定访问的方法,post方法需要 csrf=False

auth:鉴权控制,有三种:user,public,none

http请求需要使用csrf,post表单数据默认带在kw参数中


使用特定数据库:需要在配置文件中定义dbfilter

odoo路由请求会受session影响,session中的有个db字段决定使用哪个database,如果没有database,odoo会使用所谓的魔法方式去找正在使用的一个

Odoo二次开发使用细节_第1张图片

Odoo二次开发使用细节_第2张图片

注意第二张图的最后一个判断,只有在一个数据库的情况才能找出来,我们要是有多个数据库就失效了。接着再看:

Odoo二次开发使用细节_第3张图片

这个dbfilter参数可以过滤掉其他的数据库,使len(dbs)等于1


2、日志打印:

odoo代码中直接print看不到日志,自己写一个logging就行了

import logging  
  
_logger = logging.getLogger(__name__)  

_logger.debug("debug message for debugging only")  
_logger.info("information message to report important modular event")  
_logger.warning("warning message to report minor issues")  
_logger.error("error message to report failed operations")  
_logger.critical("critical message -- so bad that the module cannot work")


3、数据访问

odoo orm使用psycopg2,在路由中拿到cursor的方法如下:

str_sql = 'select * from stock_quant where product_id=%s'
http.request.env.cr.execute(str_sql, (product_id,))
result = http.request.env.cr.fetchall()

http.request.env.cr就是psycopg2的cursor,之后就可以进行操作了。

给一篇psycopg2使用介绍链接:http://blog.csdn.net/u013480495/article/details/50835363


4、使用jinja2渲染普通html页面,PackageLoader第一个参数9.0及以前版本写‘openerp.addons.xxx’或10.0以后写‘odoo.addons.xxx’



Jinja2使用教程:http://docs.jinkan.org/docs/jinja2/index.html

你可能感兴趣的:(Openerp/Odoo)