本博文内容:设计一个能够提供restful API服务的后台服务器。
作为一个app应用的后端服务器,可以用很多方法,但由于这段时间我在学习python和odoo, 所以就用odoo来开发了。
用odoo开发app的后台自然不是主流和简易的方案,但作为学习手段,这个项目就为练练手吧。
这部分内容,每天写一点,将持续在这个博文中完善
1. 安装odoo, 初始化项目框架
1. 把odoo 14软件下载下来,安装在c:/odoo目录下
2.修改odoo.conf文件
3.在odoo模块访问路径中添加一条
addons_path = C:\odoo\server\odoo\addons, C:\odoo\server\addons
4. 在C:\odoo\server\addons目录下创建一个的odoo基本框架,项目暂名为chool
manifest文件定义:
{
'name': "chool",
'summary': """ 后台服务器""",
'description': """
笔记、题库、答题
""",
'depends': ['base'],
'data': [
'security/ir.model.access.csv',
'views/views.xml',
],
'installable': True,
'application': True,
}
2 定义数据模型
本项目共定义了4个模型:
- note: 笔记模型:存放每篇文章的数据,
- exercise: 题库模型:存放题目的数据
- comments: 评论:存放用户评论的数据
- knowledgeset: 栏目:用户自定义栏目的数据
例如note数据模型:
class Note(models.Model):
_name = 'chool.note'
_description = '笔记'
UID = fields.Char(string='编号')
title = fields.Char(string='标题')
cover = fields.Text(string='封面')
content = fields.Text(string='内容')
source = fields.Char(string='来源')
knowledgeset= fields.Char(string='知识集')
author = fields.Char(string='作者')
update = fields.Char(string='日期')
action = fields.Char(string='操作')
3. 定义API接口
也就是写controller文件。
分别定义了授权接口、数据CRUD接口,就此本模块可以对外提供服务了。
class OdooAPI(http.Controller):
# 获取授权
@http.route('/auth/', type='json', auth='none', methods=["POST"], csrf=False)
def authenticate(self, *args, **post):
......
# 查询整个模型
@http.route( '/api/<string:model>', type='http', auth='user', methods=['GET'], csrf=False)
def get_model_data(self, model, **params):
......
4. 定义视图
使得能够在odoo环境下管理数据
<?xml version="1.0"?>
<odoo>
<data>
<record id="chool.note_list" model="ir.ui.view">
......
<record id="chool.note_form" model="ir.ui.view">
......
<record id="chool.note_action" model="ir.actions.act_window">
.......
<menuitem id="chool.menu_root" name="chool"/>
<menuitem id="chool.menu_1" name="笔记" action="chool.note_action" parent="chool.menu_root"/>
</data>
</odoo>
5. 定义模块访问权限
即写security文件
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_chool_note_manager,chool.note_manager,model_chool_note,base.group_user,1,1,1,1
......
6. 安装本模块
在odoo中安装这个模块