如何在 Odoo 中创建一个完全自定义的纯前端网站页面(无默认后台视图)

秋雪姑娘_7685

秋雪姑娘_7685

2026-09-15

404人浏览

原创

如何在 Odoo 中创建一个完全自定义的纯前端网站页面(无默认后台视图)

本文详解如何绕过 Odoo 默认的后台管理界面(如列表页、搜索栏、创建按钮等),通过继承 web.layout 或构建独立主题模块,实现一个仅含自定义 HTML 内容的轻量级静态网站页面。

本文详解如何绕过 odoo 默认的后台管理界面(如列表页、搜索栏、创建按钮等),通过继承 `web.layout` 或构建独立主题模块,实现一个仅含自定义 html 内容的轻量级静态网站页面。

在 Odoo 中,默认的 ir.actions.act_window(如你定义的 debit_card_action)始终导向后台管理视图(tree/form),附带完整的 Web Client UI(顶部菜单、侧边栏、搜索框、批量操作等)。若你只需一个干净、无干扰的前端页面(例如展示“Hello World!”和一个生成序列号的按钮),不应使用模型动作(act_window)或表单视图,而应转向 Odoo 的 Website 模块机制——它专为面向用户的前端页面设计。

✅ 正确路径:使用 Website 模块 + 自定义模板

首先确保已安装 website 应用(在 Apps 中搜索并安装)。随后,在你的自定义模块中添加以下结构:

1. 在 views/website_templates.xml 中定义纯前端页面

<?xml version="1.0" encoding="utf-8"?><odoo><!-- 继承基础布局,替换 body 内容 --><template id="debit_card_landing_page" name="Debit Card Landing Page" inherit_id="website.layout"><xpath expr="//main" position="replace"><main class="s_fullheight bg-white"><div class="container pt-5 pb-5 text-center">
                    <h1 class="mb-4">Heinzmann Debit Card</h1>
                    <p class="lead mb-4">Welcome to your personalized card portal.</p>
                    <button type="button" class="btn btn-primary btn-lg js-generate-seq">
                        Generate Sequence Number
                    </button>
                    <div id="seq-result" class="mt-3 text-success fw-bold"></div>
                </div>
            </main></xpath></template><!-- 可选:添加 JS 行为(需配合 static/src/js/ 目录) --><template id="assets_frontend" name="Debit Card Assets" inherit_id="website.assets_frontend"><xpath expr="." position="inside"><script type="text/javascript" src="/your_module_name/static/src/js/debit_card.js"></script></xpath></template></odoo>

2. 添加前端交互逻辑(static/src/js/debit_card.js

odoo.define('your_module_name.debit_card', function (require) {
    'use strict';

    $(document).ready(function () {
        $('.js-generate-seq').on('click', function () {
            const $btn = $(this);
            const $result = $('#seq-result');
            $btn.prop('disabled', true).text('Generating...');

            // 调用后端方法(推荐使用 /jsonrpc 或 controller)
            $.post('/debit_card/generate_seq', {}, function (data) {
                $result.text('Sequence: ' + data.sequence);
            }).fail(function () {
                $result.addClass('text-danger').text('Failed to generate.');
            }).always(function () {
                $btn.prop('disabled', false).text('Generate Sequence Number');
            });
        });
    });
});

3. 创建控制器处理请求(controllers/main.py

from odoo import http
from odoo.http import request
import json

class DebitCardController(http.Controller):

    @http.route('/debit_card/generate_seq', type='json', auth='public', methods=['POST'], csrf=False)
    def generate_sequence(self):
        # 示例:使用 Odoo 序列
        seq = request.env['ir.sequence'].next_by_code('debit.card.seq') or 'SEQ-0001'
        return {'sequence': seq}

4. 声明序列(data/sequence_data.xml

<record id="seq_debit_card" model="ir.sequence"><field name="name">Debit Card Sequence</field><field name="code">debit.card.seq</field><field name="prefix">DC-</field><field name="padding">4</field><field name="number_next">1</field></record>

5. 更新 __manifest__.py

{
    'name': 'Debit Card Website',
    'category': 'Website',
    'version': '0.1',
    'depends': ['base', 'website'],
    'data': [
        'data/sequence_data.xml',
        'views/website_templates.xml',
        'views/debit_card_menu_items.xml',  # 可选:仅用于后台入口,非必需
    ],
    'assets': {
        'website.assets_frontend': [
            'your_module_name/static/src/js/debit_card.js',
        ],
    },
    'installable': True,
    'application': False,
}

⚠️ 关键注意事项

前端美化
前端美化

使用此技能可创建独具特色、具备生产级质量的前端界面,设计品质高。当用户要求构建网页组件、页面、产物、海报或应用程序时(例如:网站、落地页、仪表盘、React 组件、HTML/CSS 布局,或对任意 Web UI 进行样式优化与视觉美化),请启用该能力。输出需为富有创意、精雕细琢的代码与 UI 设计,避免千篇一律的 AI 风格。

下载
  • 删除原 debit_card_view.xmldebit_card_actions.xml —— 它们属于后台逻辑,与纯前端网站冲突;
  • 页面 URL 由路由或网站菜单控制:发布后可通过 /page/your_module_name.debit_card_landing_page 访问;
  • 若需 SEO 友好 URL,可在 Website 后台 → Website → Pages 中将该模板设为首页或配置自定义 URL;
  • 所有前端资源(JS/CSS)必须通过 assets_frontend 注入,不可直接 <script></script> 写在模板内(Odoo 会忽略);
  • auth='public' 允许未登录用户访问;如需登录限制,改为 auth='user' 并确保用户有对应权限。

通过以上方式,你将获得一个真正“无默认视图”的轻量网站页面:零后台组件、零表格、零搜索栏,只有你定义的 HTML、CSS 和交互逻辑——这才是 Odoo 中构建品牌落地页、活动页或信息门户的正确实践。

前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

前端

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2023

5

前端如何实现即时通讯
前端如何实现即时通讯

实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

2023.10.09

4323

6

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

5430

13

php和前端的关联介绍
php和前端的关联介绍

php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

2024.03.22

4878

10

前端外包工作内容有哪些
前端外包工作内容有哪些

前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

2024.05.22

683

5

html版权符号
html版权符号

html版权符号是“©”,可以在html源文件中直接输入或者从word中复制粘贴过来,php中文网还为大家带来html的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

2023.06.14

4835

7

html在线编辑器
html在线编辑器

html在线编辑器是用于在线编辑的工具,编辑的内容是基于HTML的文档。它经常被应用于留言板留言、论坛发贴、Blog编写日志或等需要用户输入普通HTML的地方,是Web应用的常用模块之一。php中文网为大家带来了html在线编辑器的相关教程、以及相关文章等内容,供大家免费下载使用。

2023.06.21

2832

4

html网页制作
html网页制作

html网页制作是指使用超文本标记语言来设计和创建网页的过程,html是一种标记语言,它使用标记来描述文档结构和语义,并定义了网页中的各种元素和内容的呈现方式。本专题为大家提供html网页制作的相关的文章、下载、课程内容,供大家免费下载体验。

2023.07.31

2510

5

html空格
html空格

html空格是一种用于在网页中添加间隔和对齐文本的特殊字符,被用于在网页中插入额外的空间,以改变元素之间的排列和对齐方式。本专题为大家提供html空格的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.01

2519

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程