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会使用所谓的魔法方式去找正在使用的一个
注意第二张图的最后一个判断,只有在一个数据库的情况才能找出来,我们要是有多个数据库就失效了。接着再看:
这个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’