宜兴通达竭诚为您服务。

通达科技 - 宜兴电脑维护及IT服务外包服务商

ODOO12图书项目网页和控制器
  • 上传者: Administrator
  • 上传时间:2022年11月14日 02时34分14秒
  • 资源大小:10M
  • 下载点数:免费
资料简介 相关下载 请喝咖啡

    Odoo 还提供了一个 web 开发框架,可用于开发与后台应用深度集成的功能。第一步我们来创建一个显示有效图书列表的简单网页。在请求http:///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>
    

    元素用于声明 QWeb 模板,它事实上是一个存储模块的 base 模型 - ir.ui.view记录的快捷方式。模板中包含要使用的 HTML,并使用 Qweb 的特定属性:t-foreach用于遍历变量 books的每一项,通过控制器的http.request.render()调用来获取;t-field用于渲染记录字段的内容。这里仅简单地使用 QWeb。
    在模块的 manifest 中需要声明该 XML 文件来供加载和使用。进行模块升级即可通过http://:8069/library/books来访问有效图书的简单列表。
    在这里插入图片描述


    本资料从网上收集,如有侵权请联系tderp@tderp.com删除
  • 微信

服务原则及地区范围

宜兴通达网络科技有限公司,地处中国宜兴环科园内,是一家高新技术企业。公司在企业网络维护和企业信息化建设与咨询方面,有10多年经验。

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

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

宜兴地区提供上门服务:

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