Насколько я понимаю, вы фактически не вызываете метод из шаблона с использованием синтаксиса t-esc. Что вы можете сделать, так это создавать методы в ваших контроллерах, которые доступны через почту, или получать запросы. Вы можете использовать javascript, чтобы эти запросы могли обращаться с вашим шаблоном, если вы хотите или включить файл javascript в свой шаблон с помощью тега. Если сценарий просто вы могли бы, вероятно, уйти с инлайн Javascript
<script>console.log("Hello World")</script>
В противном случае вы можете указать на файл JS в вашем статическом каталоге, как это.
<script src="/<module>/static/main.js"></script>
У Odoo однако есть некоторые правила для включения js. Если вы используете Odoo CMS в качестве родительского шаблона для вашего шаблона Qweb, вы также можете использовать xpath для размещения вашего js-файла со всеми остальными файлами js Odoo.
<template id="my_js" inherit_id="website.assets_frontend" name="My Js">
<xpath expr="script[last()]" position="after">
<script type="text/javascript" src="/<module>/static/main.js" />
</xpath>
</template>
В Odoo9 вещи становятся (возможно) более сложным, как вам нужно использовать синтаксис требует JS использовать почтовые запросы в вашем js.Here является упрощенным примером, который должен работать в Odoo8. Для Odoo9 посмотрите код для других примеров, используя js.
Вот некоторые методы управления, один json, другой http. Поместите свой код внутри того, что работает для вас. Вы можете выбрать что-то более подходящее (например, некоторые данные), но True или False, указывающие на успех или неудачу, может быть достаточно.
@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})
Поместите этот 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>
Существует много, чтобы узнать, когда дело доходит до маршрутизации в Odoo. Возникают проблемы с безопасностью, проблемы с разрешениями, которые вы должны соблюдать.
https://www.odoo.com/documentation/8.0/howtos/website.html обсуждает краткий обзор нескольких концепций. https://www.odoo.com/documentation/8.0/reference/http.html обсуждает контроллеры. https://www.odoo.com/documentation/8.0/reference/javascript.html охватывает javascript. Кроме этого, посмотрите на веб-сайт, аддоны веб-сайтов в каталогах контроллеров для получения дополнительных примеров.
вы должны предоставить экземпляр: 'someinstance.thisMethod()' –
как я могу создать объект для класса контроллера? – KbiR