Templates 从模板odoo8调用python函数
在我的控制器类中有一个函数,我需要在我的一个模板中调用该函数。我试过这个: controller.pyTemplates 从模板odoo8调用python函数,templates,controller,web,odoo-8,qweb,Templates,Controller,Web,Odoo 8,Qweb,在我的控制器类中有一个函数,我需要在我的一个模板中调用该函数。我试过这个: controller.py class MyController(http.Controller): @http.route(["/myPath/"], type='http', auth="public", website=True) def myfucntion(self): -- something --- def thisMethod(self): I ne
class MyController(http.Controller):
@http.route(["/myPath/"], type='http', auth="public", website=True)
def myfucntion(self):
-- something ---
def thisMethod(self):
I need to call this methd in remplate
template.xml
<t t-esc="thisMethod()"/>
thiMethod()
如何调用此方法?据我所知,您实际上并没有使用t-esc语法从模板调用此方法。您可以在控制器中创建方法,这些方法可以通过post或get请求访问。如果希望,可以使用javascript从模板中发出这些请求,或者通过标记将javascript文件包含在模板中。如果脚本很简单,那么就可以使用内联javascript
<script>console.log("Hello World")</script>
使用上面描述的方法之一(简要地)放置此javascript以在模板中调用该方法
<script>
jQuery.get('/test/http/method/',function(data){ console.log( "HTTP RESPONSE: " + data ) });
</script>
<script>
jQuery.ajax({
type: "POST",
url: '/test/json/method/',
dataType: 'json',
async: true,
data: JSON.stringify({}),
contentType: "application/json; charset=utf-8",
success: function ( data ) {
console.log( "JSON RESPONSE: " + JSON.stringify( data ) );
},
failure: function( data ){
console.log( JSON.stringify( data ) );
}
})
</script>
get('/test/http/method/',函数(数据){console.log(“http响应:+data)});
jQuery.ajax({
类型:“POST”,
url:“/test/json/method/”,
数据类型:“json”,
async:true,
数据:JSON.stringify({}),
contentType:“应用程序/json;字符集=utf-8”,
成功:功能(数据){
log(“JSON响应:+JSON.stringify(数据));
},
故障:功能(数据){
log(JSON.stringify(data));
}
})
在奥多的路线选择上,有很多东西需要学习。存在安全问题和权限问题,您应该小心
讨论一些概念的快速概述。讨论控制器。涵盖javascript。除此之外,请查看控制器目录中的web、网站插件以了解更多示例。据我所知,您实际上没有使用t-esc语法从模板调用该方法。您可以在控制器中创建方法,这些方法可以通过post或get请求访问。如果希望,可以使用javascript从模板中发出这些请求,或者通过标记将javascript文件包含在模板中。如果脚本很简单,那么就可以使用内联javascript
<script>console.log("Hello World")</script>
使用上面描述的方法之一(简要地)放置此javascript以在模板中调用该方法
<script>
jQuery.get('/test/http/method/',function(data){ console.log( "HTTP RESPONSE: " + data ) });
</script>
<script>
jQuery.ajax({
type: "POST",
url: '/test/json/method/',
dataType: 'json',
async: true,
data: JSON.stringify({}),
contentType: "application/json; charset=utf-8",
success: function ( data ) {
console.log( "JSON RESPONSE: " + JSON.stringify( data ) );
},
failure: function( data ){
console.log( JSON.stringify( data ) );
}
})
</script>
get('/test/http/method/',函数(数据){console.log(“http响应:+data)});
jQuery.ajax({
类型:“POST”,
url:“/test/json/method/”,
数据类型:“json”,
async:true,
数据:JSON.stringify({}),
contentType:“应用程序/json;字符集=utf-8”,
成功:功能(数据){
log(“JSON响应:+JSON.stringify(数据));
},
故障:功能(数据){
log(JSON.stringify(data));
}
})
在奥多的路线选择上,有很多东西需要学习。存在安全问题和权限问题,您应该小心
讨论一些概念的快速概述。讨论控制器。涵盖javascript。除此之外,请在web上查看控制器目录中的网站插件以获取更多示例。您必须提供一个实例:
someinstance.thisMethod()
如何为控制器类创建对象?您必须提供一个实例:someinstance.thisMethod()
如何为控制器类创建对象?
@http.route('/test/json/method/', auth='none', type='json', website=True)
def test_json(self):
#YOUR CODE HERE
return json.dumps({'json':True})
@http.route('/test/http/method/', auth='none', type='http', website=True)
def test_http(self):
#YOUR CODE HERE
return json.dumps({'http':True})
<script>
jQuery.get('/test/http/method/',function(data){ console.log( "HTTP RESPONSE: " + data ) });
</script>
<script>
jQuery.ajax({
type: "POST",
url: '/test/json/method/',
dataType: 'json',
async: true,
data: JSON.stringify({}),
contentType: "application/json; charset=utf-8",
success: function ( data ) {
console.log( "JSON RESPONSE: " + JSON.stringify( data ) );
},
failure: function( data ){
console.log( JSON.stringify( data ) );
}
})
</script>