我正在通过内部链接(到控制器)向用户发送电子邮件。该链接是下一个链接:http:// localhost / my-controller?my_variable = hello。为了接收变量hello,我创建了下一个控制器:
class mail_controller(http.Controller):
@http.route('/my-controller', type='http')
def index(self, **args):
my_variable = args.get('my_variable', False)
if not my_variable:
return 'Invalid URL'
return '<h1>This is the received variable:</h1>' + str(my_variable)
一切正常。但是现在,我想使用一些ORM方法。为此,我将必须执行以下操作:
connection = openerplib.get_connection(hostname='localhost',
database='my_database',
login='my_user',
password='my_pwd', port=8069)
我想知道是否有任何方法可以避免使用ORM方法(或Odoo模型中声明的其他方法)的这种连接。首先,因为使用明文形式的用户名和密码并不安全,其次,因为连接的参数可以轻松更改(例如,如果我将模块安装在其他数据库中,或者用户修改了密码),则连接的参数很容易更改。
有人可以帮我吗?我还有其他更好的控制器吗?
只需使用http.request.env
,这与self.env
您从模型方法中可能知道的一样。
您可以your_objects = http.request.env['your.model'].search([])
使用Odoo ORM做类似的事情以及通常做的所有其他事情。只需替换self.env
为http.request.env
,您就可以使用了。
您可以http.request
在文档中了解更多信息。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句