如何在 Odoo 上制作控制器以获得自定义值?
How to make a controller on Odoo for custom value?
我需要在 Odoo 上创建一个自定义控制器来从特定任务中获取信息。而且我也可以产生结果。但是现在我遇到了一个问题。
客户端需要检索特定字段的信息。
例如,
客户需要检索带有跟踪号的信息,数据也必须是 JSON 格式。如果单号是15556456356,那么url应该是www.customurl.com/dataset/15556456356
那个URL的路由应该是@http.route('/dataset/<string:tracking_number>', type='http or json', auth="user or public")
,基本上方法应该是这样的:
import json
from odoo import http
from odoo.http import Response, request
class tracking(http.Controller):
# if user must be authenticated use auth="user"
@http.route('/dataset/<string:tracking_number>', type='http', auth="public")
def tracking(self, tracking_number): # use the same variable name
result = # compute the result with the given tracking_number and the result should be a dict to pass it json.dumps
return Response(json.dumps(result), content_type='application/json;charset=utf-8',status=200)
此方法接受 http
请求和 return json
响应,如果客户端发送 json
请求,您应该更改 type='json'
。不要忘记 import __init___.py
.
中的文件
让我们举个例子,假设我想通过在 URL
:
中给出 ID
来 return 一些关于 sale.order
的信息
import json
from odoo import http
from odoo.http import Response, request
class Tracking(http.Controller):
@http.route('/dataset/<int:sale_id>', type='http', auth="public")
def tracking(self, sale_id):
# get the information using the SUPER USER
result = request.env['sale.order'].sudo().browse([sale_id]).read(['name', 'date_order'])
return Response(json.dumps(result), content_type='application/json;charset=utf-8',status=200)
因此,当我使用浏览器输入此 URL 时:http://localhost:8069/dataset/1
:
我需要在 Odoo 上创建一个自定义控制器来从特定任务中获取信息。而且我也可以产生结果。但是现在我遇到了一个问题。
客户端需要检索特定字段的信息。
例如, 客户需要检索带有跟踪号的信息,数据也必须是 JSON 格式。如果单号是15556456356,那么url应该是www.customurl.com/dataset/15556456356
那个URL的路由应该是@http.route('/dataset/<string:tracking_number>', type='http or json', auth="user or public")
,基本上方法应该是这样的:
import json
from odoo import http
from odoo.http import Response, request
class tracking(http.Controller):
# if user must be authenticated use auth="user"
@http.route('/dataset/<string:tracking_number>', type='http', auth="public")
def tracking(self, tracking_number): # use the same variable name
result = # compute the result with the given tracking_number and the result should be a dict to pass it json.dumps
return Response(json.dumps(result), content_type='application/json;charset=utf-8',status=200)
此方法接受 http
请求和 return json
响应,如果客户端发送 json
请求,您应该更改 type='json'
。不要忘记 import __init___.py
.
让我们举个例子,假设我想通过在 URL
:
ID
来 return 一些关于 sale.order
的信息
import json
from odoo import http
from odoo.http import Response, request
class Tracking(http.Controller):
@http.route('/dataset/<int:sale_id>', type='http', auth="public")
def tracking(self, sale_id):
# get the information using the SUPER USER
result = request.env['sale.order'].sudo().browse([sale_id]).read(['name', 'date_order'])
return Response(json.dumps(result), content_type='application/json;charset=utf-8',status=200)
因此,当我使用浏览器输入此 URL 时:http://localhost:8069/dataset/1
: