官方文档:
最好不要和odoo自带的addons插件放在一起,新建自己的 modules目录,文档中命令如下
./odoo-bin scaffold Academy my-modules
发现错误, 报错 -bash: ./odoo-bin: No such file or directory
命令修改如下:
odoo scaffold Academy my-modules
会生成my-modules目录,里面有academy模块
编辑 academy/controllers/controllers.py:
# -*- coding: utf-8 -*-
from odoo import http
class Academy(http.Controller):
@http.route('/academy/academy/', auth='public')
def index(self, **kw):
return "Hello, world"
修改/etc/odoo/odoo.conf:
[options]
; This is the password that allows database operations:
; admin_passwd = admin
db_host = 127.0.0.1
db_port = 5432
db_user = odoo
db_password = odoo
addons_path = **/my-modules/ # 此处填写刚才生成的my-modules/的目录,多个之间用,分割 无须加入odoo自带的addons, 启动的时候应该会自带
重启odoo
service odoo restart
然后访问 http://localhost:8069
登录进去后,激活开发者模式,如下图:
然后在应用中,执行应用更新操作,如下图:
再搜索 Academy, 选择安装, 默认搜索时搜索应用,此时Academy是模块
再访问http://127.0.0.1:8069/academy/academy
会出现 Hello, World。
使用模板:
在 controllers/controllers.py 编辑:
# -*- coding: utf-8 -*-
from odoo import http
class Academy(http.Controller):
@http.route('/academy/academy/', auth='public')
def index(self, **kw):
return http.request.render('academy.index', {
'teachers': ["Diana Padilla", "Jody Caroll", "Lester Vaughn"],
})
编辑 views/templates.xml :
<odoo>
<template id="index">
<title>Academy</title>
<t t-foreach="teachers" t-as="teacher">
<p><t t-esc="teacher"/></p>
</t>
</template>
</odoo>
然后 重启odoo, 访问http://127.0.0.1:8069/academy/academy
出现错误:ValueError: External ID not found in the system: academy.index
很奇怪,所有的步骤都是按照官方文档来的,比对__manifest__ 中路径是否正确,templates.xml 中加入<data></data> 都失效,最后的解决方案:将Academy卸载 之后再重新安装, 即可正常访问, 升级也可。
从数据库中获取数据:
编辑 models/models.py :
# -*- coding: utf-8 -*-
from odoo import models, fields, api
class Teacher(models.Model):
_name = 'academy.teachers'
name = fields.Char()
编辑__manifest__.py
'data': [
'views/views.xml',
'views/templates.xml',
'security/ir.model.access.csv',
],
编辑security/ir.model.access.csv
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_academy_teachers,academy_academy_Teacher,model_academy_teachers,,1,0,0,0
将数据插入数据库中,重启 odoo, 升级Academy
访问 http://127.0.0.1:8069/academy/academy 即可