宜兴通达竭诚为您服务。

ODOO12图书项目网页和控制器

2020-10-16 02:10:00     作者: Administrator     来源:互联网,版权归作者所有     浏览次数: 51     文字大小:【】【】【

你没有登录,文章中的图片无法正常显示,请点击登录

Odoo 还提供了一个 web 开发框架,可用于开发与后台应用深度集成的功能。第一步我们来创建一个显示有效图书列表的简单网页。在请求http://<my-server>/library/books页面时会进行响应,所以/library/books是用于实施的 URL。这里我们简短地了解下 Odoo 网页开发。

Web控制器是负责渲染网页的组件。控制器是http.Controller中定义的方法,与URL链接(endpoint)绑定。 访问 URL 时执行控制器代码,生成向用户展示的 HTML。我们使用 QWeb 模板引擎方便HTML的渲染。

按惯例控制器代码放在/controllers子目录中,首先编辑library_app/__init__.py导入控制器模块目录:

from . import models

from . import controllers

然后添加library_app/controllers/__init__.py文件来让目录可被 Python 导入,并在该文件中添加:

from . import main

接下来就要创建真实的控制器文件library_app/controllers/main.py,并添加如下代码:

from odoo import http

class Books(http.Controller):

    @http.route('/library/books', auth='user')

    def list(self, **kwargs):

        Book = http.request.env['library.book']

        books = Book.search([])

        return http.request.render('library_app.book_list_template', {'books': books})

这里导入的odoo.http模块,是提供网页相关功能的核心组件。http.Controller是需要继承的类控制器,这里在主控制器类中使用。我们选择的类名和方法并不关联,@http.route装饰器才是重要的部分,它声明了与类方法关联的 URL 地址,此处为/books。默认访问 URL 地址要求客户登录,推荐明确指出访问的授权模式,所以这里添加了auth=’user’参数。要允许公开访问,可为@http.route 添加auth=’public’ 参数

在这个控制器方法中,我们使用http.request.env获取环境,使用它可从目录中获取有效图书记录集。最后一步是使用http.request.render() 来处理 library_app.index_template Qweb 模板并生成输出 HTML。可通过字典向模板传值,这里传递了图书记录集。

这时如果重启 Odoo 服务来重载 Python 代码,并访问/library/books会得到一个错误日志:ValueError: External ID not found in the system: 


library_app.book_list_template。这是因为我们还没有定义模板。下面就一起来定义模板。

QWeb模板是一个视图类型,应放在/views子目录下,我们来创建views/book_list_template.xml文件:

<?xml version="1.0" encoding="utf-8"?>

<odoo>

<template id="book_list_template" name="Book List">

<div id="wrap" class="container">

<h1>Books</h1>

<t t-foreach="books" t-as="book">

<div class="row">

<span t-field="book.name" />,

<span t-field="book.date_published" />,

<span t-field="book.publisher_id" />

</div>

</t>

</div>

</template>

</odoo>

<template>元素用于声明 QWeb 模板,它事实上是一个存储模块的 base 模型 - ir.ui.view记录的快捷方式。模板中包含要使用的 HTML,并使用 Qweb 的特定属性:t-foreach用于遍历变量 books的每一项,通过控制器的http.request.render()调用来获取;t-field用于渲染记录字段的内容。这里仅简单地使用 QWeb。

在模块的 manifest 中需要声明该 XML 文件来供加载和使用。进行模块升级即可通过http://<my-server>:8069/library/books来访问有效图书的简单列表。


相关视频演示:
http://www.tderp.com/download/details/odoo12-859

http://ctdrive.tderp.com/file/13502532-467147261


相关文章 评论

服务原则及地区范围

宜兴通达团队,在企业网络维护和企业信息化建设与咨询方面,有10多年经验。

我团队愿与客户一道,力求彻底解决客户问题!
我们不是在给企业提供“头痛医头、脚痛医脚”的暂时解决方案,而是在部署根本性安全与稳定服务!!
我们愿携手客户,建立企业IT规划;杜绝随意安装系统、软件等操作;力求共同维护有序、安全、稳定的网络办公环境!!!
IT服务,服务是根本,客户是上帝;我们提供快速响应、快速上门、快速排查,提供优质高效的服务!!!!

通达团队提供全国范围内的服务,服务形式包括远程协助、电话咨询、电子邮件咨询、传真咨询、问答平台的问题解决等。

宜兴地区提供上门服务:

  • 市区服务:宜城街道、城北街道(屺亭街道)、新街街道、新庄街道、环科园、渚桥开发区
  • 市郊服务:张渚镇、西渚镇、太华镇、徐舍镇、官林镇、杨巷镇、新建镇、和桥镇、高塍镇、万石镇、周铁镇、芳桥镇、丁蜀镇、湖父镇。
  • 联系电话:189-21-343434
  • 在线沟通: