Odoo13开发教程-搭建网站

2024-01-06 15:10

本文主要是介绍Odoo13开发教程-搭建网站,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

博主在外企IT领域工作多年,有一定的Python和ERP基础,最近偶然机会接触到开源ERP odoo,萌生了学习的念头,但是官网的开发教程都是英文,所以打算用浅显易懂的文字翻译成中文,方便大家一起学习,有翻译不到位的地方还请大家指正

注意:

  1. 我的Odoo代码是在官方nightly地址下的。Github源码下载也可以,只是文件目录稍有不同,在输命令的时候路径不能输错。下载地址
  2. 所有代码均调试成功发布,并在原版的教程上加了必要的截图方便读者学习。

搭建网站

提醒:

阅读这份教程需要基本的Python知识
同时需要在电脑或服务器上已安装好Odoo应用

创建自定义模块

在Odoo中,任务都是在创建的模块中执行的。
模块可以自定义Odoo的行为,无论是通过添加新的行为或者修改现有的(包括添加其他模块的行为来定制化)。

Odoo的scaffolding脚手架 可以创建模块。通过调用命令:

$ ./odoo-bin scaffold Academy my-modules

系统便会自动创建目录my-modules以及其包含的模块academy 。目录可以是存在的目录名,但是模块名必须是唯一的。
目录

演示模块

我们已经有了一个刚刚创建好的模块,尽管啥功能也没有,但是我们可以安装了。

  • 启动Odoo服务(因为博主在Mac上安装的odoo,需要加上-c odoo.conf配置文件来连接数据库
$ ./odoo-bin --addons-path odoo/addons,my-modules -c odoo.conf   
  • 在浏览器输入http://localhost:8069
  • 新建一个包含演示数据的数据库
  • 进入:应用,在搜索框移除默认已过滤出的“应用”
  • 在右上角搜索框搜索“academy”(博主调成了开发者模式,然后点击菜单栏上的“刷新本地模块列表”成功搜索到了)
  • 点击安装 按钮安装 Academy 模块

与浏览器交互

控制器解析浏览器请求并返回数据。
添加一个简单的控制器并且确保他在__init__.py文件中导入了(这样Odoo可以找到)
academy/controllers.py

# -*- coding: utf-8 -*-
from odoo import httpclass Academy(http.Controller):@http.route('/academy/academy/', auth='public')def index(self, **kw):return "Hello, world"#     @http.route('/academy/academy/objects/', auth='public')
#     def list(self, **kw):

关闭Server(Ctrl+C) 然后重启:

./odoo-bin --addons-path odoo/addons,my-modules -c odoo.conf

打开网页http://localhost:8069/academy/academy/, 你可以看到页面显示:

模板

在Python中生成HTML文件不是很理想。
通常的解决办法是利用模板,通过伪代码文件来显示。Odoo允许任何模板系统,但是他自己提供的OWeb模板系统很好的整合了一些其他的功能。
创建模板并且确保模板文件在__mainfest__.py 文件中注册,并且修改控制器来使用我们的模板:
academy/controllers.py

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"],})#     @http.route('/academy/academy/objects/', auth='public')
#     def list(self, **kw):

academy/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><!-- <template id="object"> --><!--   <h1><t t-esc="object.display_name"/></h1> --><!--   <dl> -->
</odoo>

模板会通过迭代器(t-foreach)迭代所有的teacher,并且打印出每个teacher
最后重启Odoo并且升级模块数据。

./odoo-bin --addons-path odoo/addons,my-modules -d odoo13 -u academy -c odoo.conf

点击http://localhost:8069/academy/academy/ 会显示:

在Odoo上存储数据

Odoo的模型映射到数据库的表。
在之前的章节我们仅仅用Python静态地显示了字符串列表。它并不允许修改或者持续存储,所以现在我们要把我们的数据移到数据库。

定义数据模型

定义一个teacher模型,并且确保它在__init__.py中正确导入:
academy/models/models.py

from odoo import models, fields, apiclass Teachers(models.Model):_name = 'academy.teachers'name = fields.Char()

接着给模型设置基本的访问控制并且添加到manifest
academy/__manifest__.py

    # always loaded'data': ['security/ir.model.access.csv','templates.xml',],# only loaded in demonstration mode

academy/security/ir.models.access.csv

id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_academy_teachers,access_academy_teachers,model_academy_teachers,,1,0,0,0

这里简单的给了所有用户(group_id:id)读权限(perm_read)
数据文件(XML或者CSV)必须被添加在模块的manifest中,Python文件(模型或者控制器)不用,但是Python文件必须引入在__init__.py中(直接或者间接)
管理员用户通过权限来控制,他们能访问所有模型甚至没有给权限的

这篇关于Odoo13开发教程-搭建网站的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/lianzhanshu/article/details/103500004
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/576729

相关文章

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

Ubuntu固定虚拟机ip地址的方法教程

《Ubuntu固定虚拟机ip地址的方法教程》本文详细介绍了如何在Ubuntu虚拟机中固定IP地址,包括检查和编辑`/etc/apt/sources.list`文件、更新网络配置文件以及使用Networ... 1、由于虚拟机网络是桥接,所以ip地址会不停地变化,接下来我们就讲述ip如何固定 2、如果apt安

PyCharm 接入 DeepSeek最新完整教程

《PyCharm接入DeepSeek最新完整教程》文章介绍了DeepSeek-V3模型的性能提升以及如何在PyCharm中接入和使用DeepSeek进行代码开发,本文通过图文并茂的形式给大家介绍的... 目录DeepSeek-V3效果演示创建API Key在PyCharm中下载Continue插件配置Con

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

在不同系统间迁移Python程序的方法与教程

《在不同系统间迁移Python程序的方法与教程》本文介绍了几种将Windows上编写的Python程序迁移到Linux服务器上的方法,包括使用虚拟环境和依赖冻结、容器化技术(如Docker)、使用An... 目录使用虚拟环境和依赖冻结1. 创建虚拟环境2. 冻结依赖使用容器化技术(如 docker)1. 创

Spring Boot整合log4j2日志配置的详细教程

《SpringBoot整合log4j2日志配置的详细教程》:本文主要介绍SpringBoot项目中整合Log4j2日志框架的步骤和配置,包括常用日志框架的比较、配置参数介绍、Log4j2配置详解... 目录前言一、常用日志框架二、配置参数介绍1. 日志级别2. 输出形式3. 日志格式3.1 PatternL

nginx部署https网站的实现步骤(亲测)

《nginx部署https网站的实现步骤(亲测)》本文详细介绍了使用Nginx在保持与http服务兼容的情况下部署HTTPS,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值... 目录步骤 1:安装 Nginx步骤 2:获取 SSL 证书步骤 3:手动配置 Nginx步骤 4:测

MySQL8.2.0安装教程分享

《MySQL8.2.0安装教程分享》这篇文章详细介绍了如何在Windows系统上安装MySQL数据库软件,包括下载、安装、配置和设置环境变量的步骤... 目录mysql的安装图文1.python访问网址2javascript.点击3.进入Downloads向下滑动4.选择Community Server5.

CentOS系统Maven安装教程分享

《CentOS系统Maven安装教程分享》本文介绍了如何在CentOS系统中安装Maven,并提供了一个简单的实际应用案例,安装Maven需要先安装Java和设置环境变量,Maven可以自动管理项目的... 目录准备工作下载并安装Maven常见问题及解决方法实际应用案例总结Maven是一个流行的项目管理工具

本地搭建DeepSeek-R1、WebUI的完整过程及访问

《本地搭建DeepSeek-R1、WebUI的完整过程及访问》:本文主要介绍本地搭建DeepSeek-R1、WebUI的完整过程及访问的相关资料,DeepSeek-R1是一个开源的人工智能平台,主... 目录背景       搭建准备基础概念搭建过程访问对话测试总结背景       最近几年,人工智能技术