Odoo16 实用功能之Form视图详解(表单视图)

 

目录

1、什么是Form视图

2、Form视图的结构

3、源码示例

 

 


 

 

1、什么是Form视图

        Form视图是用于查看和编辑数据库记录的界面。每个数据库模型在Odoo中都有一个Form视图,用于显示该模型的数据。Form视图提供了一个可编辑的界面,允许用户查看和修改数据库记录的字段值。

2、Form视图的结构

  • 页眉(Header): 通常包含记录的标题或按钮信息。

  • 主体(Body): 包含字段的输入框、选择框、按钮等,用于展示和编辑记录的具体数据。

  • 页脚(Footer): 包含操作按钮,例如保存、取消等。

 

示例

<record id="view_my_model_form" model="ir.ui.view"><field name="name">my.model.form</field><field name="model">my.model</field><field name="arch" type="xml"><form><group><field name="name"/><field name="description"/><!-- 其他字段... --></group><footer><button string="Save" class="oe_highlight" type="object" name="save"/><button string="Cancel" class="oe_link" special="cancel"/></footer></form></field>
</record>

3、源码示例

这里以CRM中的渠道作为讲解

 

 

源码:

 <record id="crm_lead_view_form" model="ir.ui.view"><field name="name">crm.lead.form</field><field name="model">crm.lead</field><field name="arch" type="xml"><form class="o_lead_opportunity_form" js_class="crm_form"><header><button name="action_set_won_rainbowman" string="Won"type="object" class="oe_highlight" data-hotkey="w" title="Mark as won"attrs="{'invisible': ['|','|', ('active','=',False), ('probability', '=', 100), ('type', '=', 'lead')]}"/><button name="%(crm.crm_lead_lost_action)d" string="Lost" data-hotkey="l" title="Mark as lost"type="action" context="{'default_lead_id': active_id}" attrs="{'invisible': ['|', ('type', '=', 'lead'), '&amp;',('active', '=', False),('probability', '&lt;', 100)]}"/><button name="%(crm.action_crm_lead2opportunity_partner)d" string="Convert to Opportunity" type="action" help="Convert to Opportunity"class="oe_highlight" attrs="{'invisible': ['|', ('type', '=', 'opportunity'), ('active', '=', False)]}" data-hotkey="v"/><button name="toggle_active" string="Restore" type="object" data-hotkey="z"attrs="{'invisible': ['|', ('probability', '&gt;', 0), ('active', '=', True)]}"/><button name="action_set_lost" string="Lost" type="object" data-hotkey="l" title="Mark as lost"attrs="{'invisible': ['|', ('type', '=', 'opportunity'), '&amp;', ('probability', '=', 0), ('active', '=', False)]}"/><field name="stage_id" widget="statusbar" class="o_field_statusbar"options="{'clickable': '1', 'fold_field': 'fold'}"domain="['|', ('team_id', '=', team_id), ('team_id', '=', False)]"attrs="{'invisible': ['|', ('active', '=', False), ('type', '=', 'lead')]}"/></header><sheet><field name="active" invisible="1"/><field name="company_id" invisible="1"/><div class="oe_button_box" name="button_box"><button name="action_schedule_meeting" type="object"class="oe_stat_button" icon="fa-calendar"context="{'partner_id': partner_id}"attrs="{'invisible': [('type', '=', 'lead')]}"><div class="o_stat_info"><field name="calendar_event_count" class="o_stat_value"/><span class="o_stat_text" attrs="{'invisible': [('calendar_event_count', '&lt;', 2)]}"> Meetings</span><span class="o_stat_text" attrs="{'invisible': [('calendar_event_count', '&gt;', 1)]}"> Meeting</span></div></button><button name="action_show_potential_duplicates" type="object"class="oe_stat_button" icon="fa-star"attrs="{'invisible': [('duplicate_lead_count', '&lt;', 1)]}"><div class="o_stat_info"><field name="duplicate_lead_count" class="o_stat_value"/><span class="o_stat_text" attrs="{'invisible': [('duplicate_lead_count', '&lt;', 2)]}">Similar Leads</span><span class="o_stat_text" attrs="{'invisible': [('duplicate_lead_count', '&gt;', 1)]}">Similar Lead</span></div></button></div><widget name="web_ribbon" title="Lost" bg_color="bg-danger" attrs="{'invisible': ['|', ('probability', '&gt;', 0), ('active', '=', True)]}"/><widget name="web_ribbon" title="Won" attrs="{'invisible': [('probability', '&lt;', 100)]}" /><div class="oe_title"><h1><field class="text-break" name="name" placeholder="e.g. Product Pricing"/></h1><h2 class="d-flex gap-2 g-0 align-items-end pb-3"><div attrs="{'invisible': [('type', '=', 'lead')]}"><label for="expected_revenue" class="oe_edit_only pb-1" /><div class="d-flex align-items-end"><field name="company_currency" invisible="1"/><field name="expected_revenue" class="oe_inline o_input_8ch" widget='monetary' options="{'currency_field': 'company_currency'}"/><span class="oe_grey p-2" groups="crm.group_use_recurring_revenues"> + </span><span class="oe_grey p-2" groups="!crm.group_use_recurring_revenues"> at </span></div></div><div attrs="{'invisible': [('type', '=', 'lead')]}" groups="crm.group_use_recurring_revenues"><field name="recurring_revenue" class="oe_inline o_input_10ch" widget="monetary" options="{'currency_field': 'company_currency'}"/></div><div attrs="{'invisible': [('type', '=', 'lead')]}" groups="crm.group_use_recurring_revenues"><div class="d-flex align-items-end ps-2"><field name="recurring_plan" class="oe_inline o_input_12ch" placeholder="E.g. Monthly"attrs="{'required': [('recurring_revenue', '!=', 0)]}" options="{'no_create': True, 'no_open': True}"/><span class="oe_grey p-2"> at </span></div></div><div><div class="oe_edit_only d-md-flex align-items-center"><label for="probability"/><div class="d-flex align-items-center"><button class="ps-0 ps-md-2 btn btn-link" name="action_set_automated_probability" type="object"attrs="{'invisible': [('is_automated_probability', '=', True)]}"><i class="fa fa-gear" role="img" title="Switch to automatic probability" aria-label="Switch to automatic probability"></i></button><small class="oe_grey h6 mb0 d-flex" attrs="{'invisible': [('is_automated_probability', '=', True)]}"><field class="mb0" name="automated_probability" force_save="1"/> %</small></div></div><div id="probability" class="d-inline-block"><field name="is_automated_probability" invisible="1"/><field name="probability" widget="float" class="oe_inline o_input_6ch"/><span class="oe_grey"> %</span></div></div></h2></div><group><group name="lead_partner" attrs="{'invisible': [('type', '=', 'opportunity')]}"><!-- Preload all the partner's information --><field name="is_partner_visible" invisible='1'/><field name="partner_id" widget="res_partner_many2one"context="{'default_name': contact_name,'default_title': title,'default_street': street,'default_street2': street2,'default_city': city,'default_state_id': state_id,'default_zip': zip,'default_country_id': country_id,'default_function': function,'default_phone': phone,'default_mobile': mobile,'default_email': email_from,'default_user_id': user_id,'default_team_id': team_id,'default_website': website,'default_lang': lang_code,'show_vat': True}" attrs="{'invisible': [('is_partner_visible', '=', False)]}"/><field name="partner_name"/><label for="street" string="Address"/><div class="o_address_format"><field name="street" placeholder="Street..." class="o_address_street"/><field name="street2" placeholder="Street 2..." class="o_address_street"/><field name="city" placeholder="City" class="o_address_city"/><field name="state_id" class="o_address_state" placeholder="State" options='{"no_open": True}'/><field name="zip" placeholder="ZIP" class="o_address_zip"/><field name="country_id" placeholder="Country" class="o_address_country" options='{"no_open": True, "no_create": True}'/></div><field name="website" widget="url" placeholder="e.g. https://www.odoo.com"/><field name="lang_active_count" invisible="1"/><field name="lang_code" invisible="1"/><field name="lang_id" attrs="{'invisible': [('lang_active_count', '&lt;=', 1)]}"options="{'no_quick_create': True, 'no_create_edit': True, 'no_open': True}"/></group><group name="opportunity_partner" attrs="{'invisible': [('type', '=', 'lead')]}"><field name="partner_id"widget="res_partner_many2one"string="Customer"context="{'res_partner_search_mode': type == 'opportunity' and 'customer' or False,'default_name': contact_name or partner_name,'default_street': street,'default_is_company': type == 'opportunity' and contact_name == False,'default_company_name': type == 'opportunity' and partner_name,'default_street2': street2,'default_city': city,'default_title': title,'default_state_id': state_id,'default_zip': zip,'default_country_id': country_id,'default_function': function,'default_phone': phone,'default_mobile': mobile,'default_email': email_from,'default_user_id': user_id,'default_team_id': team_id,'default_website': website,'default_lang': lang_code,'show_vat': True,}"/><field name="is_blacklisted" invisible="1"/><field name="partner_is_blacklisted" invisible="1"/><field name="phone_blacklisted" invisible="1"/><field name="mobile_blacklisted" invisible="1"/><field name="email_state" invisible="1"/><field name="phone_state" invisible="1"/><field name="partner_email_update" invisible="1"/><field name="partner_phone_update" invisible="1"/><label for="email_from" class="oe_inline"/><div class="o_row o_row_readonly"><button name="mail_action_blacklist_remove" class="fa fa-ban text-danger"title="This email is blacklisted for mass mailings. Click to unblacklist."type="object" context="{'default_email': email_from}" groups="base.group_user"attrs="{'invisible': [('is_blacklisted', '=', False)]}"/><field name="email_from" string="Email" widget="email"/><span class="fa fa-exclamation-triangle text-warning oe_edit_only"title="By saving this change, the customer email will also be updated."attrs="{'invisible': [('partner_email_update', '=', False)]}"/></div><label for="phone" class="oe_inline"/><div class="o_row o_row_readonly"><button name="phone_action_blacklist_remove" class="fa fa-ban text-danger"title="This phone number is blacklisted for SMS Marketing. Click to unblacklist."type="object" context="{'default_phone': phone}" groups="base.group_user"attrs="{'invisible': [('phone_blacklisted', '=', False)]}"/><field name="phone" widget="phone"/><span class="fa fa-exclamation-triangle text-warning oe_edit_only"title="By saving this change, the customer phone number will also be updated."attrs="{'invisible': [('partner_phone_update', '=', False)]}"/></div><field name="lost_reason_id" attrs="{'invisible': [('active', '=', True)]}"/><field name="date_conversion" invisible="1"/><field name="user_company_ids" invisible="1"/></group><group name="lead_info" attrs="{'invisible': [('type', '=', 'opportunity')]}"><label for="contact_name"/><div class="o_row"><field name="contact_name"/><field name="title" placeholder="Title" domain="[]" options='{"no_open": True}'/></div><field name="is_blacklisted" invisible="1"/><field name="phone_blacklisted" invisible="1"/><field name="email_state" invisible="1"/><field name="phone_state" invisible="1"/><field name="partner_email_update" invisible="1"/><field name="partner_phone_update" invisible="1"/><label for="email_from_group_lead_info" class="oe_inline"/><div class="o_row o_row_readonly"><button name="mail_action_blacklist_remove" class="fa fa-ban text-danger"title="This email is blacklisted for mass mailings. Click to unblacklist."type="object" context="{'default_email': email_from}" groups="base.group_user"attrs="{'invisible': [('is_blacklisted', '=', False)]}"/><field name="email_from" id="email_from_group_lead_info" string="Email" widget="email"/><span class="fa fa-exclamation-triangle text-warning oe_edit_only"title="By saving this change, the customer email will also be updated."attrs="{'invisible': [('partner_email_update', '=', False)]}"/></div><field name="email_cc" groups="base.group_no_one"/><field name="function"/><label for="phone_group_lead_info" class="oe_inline"/><div class="o_row o_row_readonly"><button name="phone_action_blacklist_remove" class="fa fa-ban text-danger"title="This phone number is blacklisted for SMS Marketing. Click to unblacklist."type="object" context="{'default_phone': phone}" groups="base.group_user"attrs="{'invisible': [('phone_blacklisted', '=', False)]}"/><field name="phone" id="phone_group_lead_info" widget="phone"/><span class="fa fa-exclamation-triangle text-warning oe_edit_only"title="By saving this change, the customer phone number will also be updated."attrs="{'invisible': [('partner_phone_update', '=', False)]}"/></div><label for="mobile" class="oe_inline"/><div class="o_row o_row_readonly"><button name="phone_action_blacklist_remove" class="fa fa-ban text-danger"title="This phone number is blacklisted for SMS Marketing. Click to unblacklist."type="object" context="{'default_phone': mobile}" groups="base.group_user"attrs="{'invisible': [('mobile_blacklisted', '=', False)]}"/><field name="mobile" widget="phone" string="Mobile"/></div></group><field name="type" invisible="1"/><group attrs="{'invisible': [('type', '=', 'lead')]}"><field name="user_id"context="{'default_sales_team_id': team_id}" widget="many2one_avatar_user"/><label for="date_deadline">Expected Closing</label><div class="o_lead_opportunity_form_inline_fields"><field name="date_deadline" nolabel="1" class="oe_inline"/><field name="priority" widget="priority" nolabel="1" class="oe_inline align-top"/></div><field name="tag_ids" widget="many2many_tags" options="{'color_field': 'color', 'no_create_edit': True}"/></group><group attrs="{'invisible': [('type', '=', 'opportunity')]}"><field name="user_id"context="{'default_sales_team_id': team_id}" widget="many2one_avatar_user"/><field name="team_id" options="{'no_open': True, 'no_create': True}"/></group><group name="lead_priority" attrs="{'invisible': [('type', '=', 'opportunity')]}"><field name="priority" widget="priority"/><field name="tag_ids" widget="many2many_tags" options="{'color_field': 'color', 'no_create_edit': True}"/></group></group><field attrs="{'invisible': [('team_id', '=', False)]}"name="lead_properties" nolabel="1" columns="2" hideKanbanOption="1"/><notebook><page string="Internal Notes" name="internal_notes"><field name="description" placeholder="Add a description..." options="{'collaborative': true}" /></page><page name="extra" string="Extra Info" attrs="{'invisible': [('type', '=', 'opportunity')]}"><group><group string="Email" groups="base.group_no_one"><field name="message_bounce" readonly="1"/></group><group string="Marketing" name="categorization"><field name="company_id"groups="base.group_multi_company"options="{'no_create': True}"/><field name="campaign_id" options="{'create_name_field': 'title', 'always_reload': True}"/><field name="medium_id"/><field name="source_id"/><field name="referred"/></group><group string="Analysis"><field name="date_open"/><field name="date_closed"/></group></group></page><page name="lead" string="Extra Information" attrs="{'invisible': [('type', '=', 'lead')]}"><group><group string="Contact Information"><field name="partner_name"/><label for="street_page_lead" string="Address"/><div class="o_address_format"><field name="street" id="street_page_lead" placeholder="Street..." class="o_address_street"/><field name="street2" placeholder="Street 2..." class="o_address_street"/><field name="city" placeholder="City" class="o_address_city"/><field name="state_id" class="o_address_state" placeholder="State" options='{"no_open": True}'/><field name="zip" placeholder="ZIP" class="o_address_zip"/><field name="country_id" placeholder="Country" class="o_address_country" options='{"no_open": True, "no_create": True}'/></div><field name="website" widget="url" placeholder="e.g. https://www.odoo.com"/><field name="lang_active_count" invisible="1"/><field name="lang_id" attrs="{'invisible': [('lang_active_count', '&lt;=', 1)]}"options="{'no_quick_create': True, 'no_create_edit': True, 'no_open': True}"/></group><group class="mt48"><label for="contact_name_page_lead"/><div class="o_row"><field name="contact_name" id="contact_name_page_lead"/><field name="title" placeholder="Title" domain="[]" options='{"no_open": True}'/></div><field name="function"/><label for="mobile_page_lead" class="oe_inline"/><div class="o_row o_row_readonly"><button name="phone_action_blacklist_remove" class="fa fa-ban text-danger"title="This phone number is blacklisted for SMS Marketing. Click to unblacklist."type="object" context="{'default_phone': mobile}" groups="base.group_user"attrs="{'invisible': [('mobile_blacklisted', '=', False)]}"/><field name="mobile" id="mobile_page_lead" widget="phone"/></div></group><group string="Marketing"><field name="campaign_id" options="{'create_name_field': 'title', 'always_reload': True}"/><field name="medium_id" /><field name="source_id" /><field name="referred"/></group><group string="Tracking" name="Misc"><field name="company_id"groups="base.group_multi_company"options="{'no_create': True}"/><field name="team_id" options="{'no_open': True, 'no_create': True}"/><field name="day_open" /><field name="day_close"/><field name="type" invisible="1"/></group></group></page></notebook></sheet><div class="oe_chatter"><field name="message_follower_ids"/><field name="activity_ids"/><field name="message_ids" options="{'post_refresh': 'recipients'}"/></div></form></field></record>

参数解释:

  1. <record> 元素:

    • id="crm_lead_view_form":视图的唯一标识符,用于在其他地方引用该视图。
    • model="ir.ui.view":指定模型为 ir.ui.view,这是Odoo中用于存储用户界面视图定义的模型。
  2. <field> 元素:

    • name="name":视图的名称,用于在Odoo界面中标识该视图。
    • model="crm.lead":指定模型为 crm.lead,表示该视图关联到 crm.lead 模型。
  3. <form> 元素:

    • class="o_lead_opportunity_form":为视图添加CSS类名,可以用于自定义视图的样式。
    • js_class="crm_form":为视图添加JavaScript类名,可用于自定义视图的行为。
  4. <header> 元素:

    • 包含了在 Form 视图的顶部显示的按钮和字段,如 "Won"、"Lost"、"Convert to Opportunity" 等。
  5. <button> 元素:

    • name:按钮的方法名称,点击按钮时会触发该方法。
    • string:按钮上显示的文本。
    • type:按钮的类型,可以是 "object" 或 "action"。
    • class:CSS类,用于自定义按钮的样式。
    • data-hotkey:定义热键,用户可以通过键盘快捷键触发按钮。
    • context:上下文,传递给按钮触发的方法。
  6. <field> 元素:

    • name="stage_id":展示了一个阶段的字段,使用了 widget="statusbar",显示为状态栏。
    • domain:定义了字段的域(过滤条件)。
  7. <sheet> 元素:

    • 包含了 Form 视图主体的内容,包括字段、按钮、页签等。
  8. <widget> 元素:

    • name="web_ribbon":自定义小部件,用于在记录上显示标签,如 "Lost" 或 "Won"。
    • title:小部件的标题。
    • bg_color:背景颜色,用于区分不同的标签。
  9. <div> 元素:

    • class="oe_button_box":包含按钮的容器,用于自定义按钮的布局。
  10. <notebook> 元素:

    • 包含了多个页签,每个页签使用 <page> 元素定义。这里有 "Internal Notes"、"Extra Info" 和 "Extra Information" 三个页签。
  11. <group> 元素:

    • 包含了一组相关的字段,可以通过 attrs 属性控制字段组的可见性。
  12. <field> 元素:

    • widget="many2one_avatar_user":使用了 many2one_avatar_user 小部件,用于选择用户,并显示用户的头像。
  13. <button> 元素:

    • name="action_schedule_meeting":触发一个方法来安排会议。
    • context:定义了在触发方法时传递给方法的上下文。
  14. <widget> 元素:

    • name="web_ribbon":自定义小部件,用于显示记录的标签。
  15. <notebook> 中的 <page> 元素:

    • 包含了不同的信息页,例如 "Internal Notes"、"Extra Info" 和 "Extra Information"。
  16. <div> 元素:

    • class="oe_chatter":包含了关于记录的讨论和活动信息。
  17. <field> 元素:

    • name="message_follower_ids"name="activity_ids"name="message_ids":用于显示关注者、活动和消息的信息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/241791.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[python]用python实现对arxml文件的操作

目录 关键词平台说明一、背景二、方法2.1 库2.2 code 关键词 python、excel、DBC、openpyxl 平台说明 项目Valuepython版本3.6 一、背景 有时候需要批量处理arxml文件(ARXML 文件符合 AUTOSAR 4.0 标准)&#xff0c;但是工作量太大&#xff0c;阔以考虑用python。 二、方…

最新版 JESD79-5B,2022年,JEDEC 内存SDRAM规范

本标准定义了DDR5 SDRAM规范&#xff0c;包括特性、功能、交流和直流特性、封装以及球/信号分配。本标准旨在为x4、x8和x16 DDR5 SDRAM设备定义符合JEDEC标准的8 Gb至32 Gb的最低要求。该标准是基于DDR4标准&#xff08;JESD79-4&#xff09;和DDR、DDR2、DDR3和LPDDR4标准的一…

智能优化算法应用:基于金枪鱼群算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于金枪鱼群算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于金枪鱼群算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.金枪鱼群算法4.实验参数设定5.算法结果6.…

1856_emacs_calc使用介绍与故事

Grey 全部学习内容汇总&#xff1a; GitHub - GreyZhang/g_org: my learning trip for org-mode 1856_emacs_calc使用介绍与故事 calc是emacs内置的一个计算器&#xff0c;可以提供多种计算表达方式并且可以支持org-mode中的表格功能。 主题由来介绍 我是因为想要了解org-…

采草(动态规划)

先说说我的思路吧 下面是部分聊天记录 赤坂 龍之介 2023/12/22 11:06:04 就像我之前说的那样&#xff0c;我把每一个药草的价值除以时间&#xff0c;得出了新的价值评估标准&#xff1a;采摘这个药草时&#xff0c;每分钟的价值 赤坂 龍之介 2023/12/22 11:07:00 然后排…

2023年小型计算机视觉总结

在过去的十年中&#xff0c;出现了许多涉及计算机视觉(CV)的项目&#xff0c;无论是小型的概念验证项目还是更大规模的生产应用。应用计算机视觉的方法是相当标准化的: 1、定义问题(分类、检测、跟踪、分割)、输入数据(图片的大小和类型、视野)和类别(正是我们想要的) 2、注释…

Python算法例27 对称数

1. 问题描述 对称数是一个旋转180后&#xff08;倒过来&#xff09;看起来与原数相同的数&#xff0c;找到所有长度为n的对称数。 2. 问题示例 给出n2&#xff0c;返回[&#xff02;11&#xff02;&#xff0c;&#xff02;69&#xff02;&#xff0c;&#xff02;88&#x…

详解Vue3中的基础路由和动态路由

本文主要介绍Vue3中的基础路由和动态路由。 目录 一、基础路由二、动态路由 Vue3中的路由使用的是Vue Router库&#xff0c;它是一个官方提供的用于实现应用程序导航的工具。Vue Router在Vue.js的核心库上提供了路由的功能&#xff0c;使得我们可以在单页应用中实现页面的切换、…

QT编写应用的界面自适应分辨率的解决方案

博主在工作机上完成QT软件开发&#xff08;控件大小与字体大小比例正常&#xff09;&#xff0c;部署到客户机后&#xff0c;发现控件大小与字体大小比例失调&#xff0c;具体表现为控件装不下字体&#xff0c;即字体显示不全&#xff0c;推测是软件不能自适应分辨率导致的。 文…

C/C++ 共用体union的应用和struct不同

共用体union是一种数据格式&#xff0c;它能够存储不同的数据类型&#xff0c;但只能同时存储其中的一种类型。也就是说&#xff0c;结构体同时存储int、long和double,共用体只能春初int、long或double,共用体的语法与结构体相似&#xff0c;但含义不同。例如下面的声明&#x…

基于javaSpringbootmysql的小型超市商品展销系统01635-计算机毕业设计项目选题推荐(免费领源码)

摘 要 科技进步的飞速发展引起人们日常生活的巨大变化&#xff0c;电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流&#xff0c;人类发展的历史正进入一个新时代。在现实运用中&#xff0c;应用软件的工作…

【SpringCloud】-GateWay源码解析

GateWay系列 【SpringCloud】-GateWay网关 一、背景介绍 当一个请求来到 Spring Cloud Gateway 之后&#xff0c;会经过一系列的处理流程&#xff0c;其中涉及到路由的匹配、过滤器链的执行等步骤。今天我们来说说请求经过 Gateway 的主要执行流程和原理是什么吧 二、正文 …

【教3妹学编程-算法题】收集足够苹果的最小花园周长

3妹&#xff1a;“在小小的花园里面挖呀挖呀挖&#xff0c;种小小的种子开小小的花” 2哥 : 3妹也会唱这首儿歌呀&#xff0c; 这首儿歌在五一期间很火啊。 3妹&#xff1a;是呀&#xff0c; 小朋友们都喜欢唱&#xff0c;我这个200多个月的大朋友也喜欢唱&#xff0c;哈哈 2哥…

仅操作一台设备,如何实现本地访问另一个相同网段的私网?

正文共&#xff1a;1034 字 8 图&#xff0c;预估阅读时间&#xff1a;4 分钟 书接上文&#xff08;地址重叠时&#xff0c;用户如何通过NAT访问对端IP网络&#xff1f;&#xff09;&#xff0c;我们已经通过两台设备的组合配置实现了通过IP地址进行访问。但一般场景中&#xf…

爬虫工作量由小到大的思维转变---<第二十三章 Scrapy开始很快,越来越慢(医病篇)>

诊断篇https://blog.csdn.net/m0_56758840/article/details/135170994?ops_request_misc%257B%2522request%255Fid%2522%253A%2522170333243316800180644102%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id1703332433168001806441…

C/C++ 连接访问 MySQL数据库

前面我们已经讲述了MySQL的基础使用&#xff0c;现在我们来看一下如何使用语言来操作数据库。在实际开发中&#xff0c;语言连接MySQL是为了能够在编程语言中与MySQL数据库进行交互和操作。大部分情况我们都是通过语言连接MySQL&#xff0c;建立与MySQL数据库的连接&#xff0c…

【SassVue】仿网易云播放器动画

简介 仿网易云播放动画 效果图&#xff08;效果图&#xff09; 最终成品效果 动画组件 src/components/musicPlay.vue <template><div class"music-play"><div></div><div></div><div></div></div> </te…

INFINI Gateway 如何防止大跨度查询

背景 业务每天生成一个日期后缀的索引&#xff0c;写入当日数据。 业务查询有时会查询好多天的数据&#xff0c;导致负载告警。 现在想对查询进行限制–只允许查询一天的数据&#xff08;不限定是哪天&#xff09;&#xff0c;如果想查询多天的数据就走申请。 技术分析 在每…

CogAgent:带 Agent 能力的视觉模型来了

之前我们分享过智谱AI新一代多模态大模型 CogVLM&#xff0c;该模型在不牺牲任何 NLP 任务性能的情况下&#xff0c;实现视觉语言特征的深度融合&#xff0c;其中 CogVLM-17B 在 14 个多模态数据集上取得最好或者第二名的成绩。 12月15日&#xff0c;基于 CogVLM&#xff0c;提…