和Django,Flask 挺像的,也是定义路线,然后捞资料,最后回传。
先写 controllers文件夹的内容:【controllers.py】
from odoo import http
class Mysale(http.Controller):
@http.route('/demo/mysale', auth='user', website=True)
def list(self, **kwargs):
obj = http.request.env['mysale.mysale']
objs = obj.search([])
return http.request.render(
'mysale.demo_controllers_template', {'objs': objs})
【init.py】里边:
@http.route('/demo/mysale', auth='user'),auth=‘user’代表要登录才能看得到。
再写views/demo_controllers_template.xml 【demo_controllers_template】
<odoo>
<template id="demo_controllers_template" name="Demo odoo List">
<h1>
测试一下 - 这个模板 controllers template
</h1>
<div>
<hr/>
这是一个div!
<hr/>
</div>
</template>
</odoo>
__manifest__.py里把xml添加进去:路径为:
【0.0.0.0:8069/demo/mysale】
因为并没有导入 website这个模板,所以这时的网页只展示我们写的东西,如果需要加入官方模板,那就得在写controllers.py时 加上 website=True
在manifest中也得继承website --- 【 'depends': ['website'] 】
demo_controllers_template.xml的写法也有所改变:
<odoo>
<template id="demo_controllers_template" name="Demo odoo List">
<t t-call="website.layout">
<h1>
测试一下 这个模板 controllers template
</h1>
<div>
<hr/>
这是一个div!
<hr/>
</div>
</t>
</template>
</odoo>
加载出来后就携带官方模板: