首页 > 编程语言 >Python网页应用开发神器Dash 2.18.1稳定版本来啦

Python网页应用开发神器Dash 2.18.1稳定版本来啦

时间:2024-09-13 17:26:49浏览次数:11  
标签:dash Python demo nClicks Dash 版本 2.18

本文示例代码已上传至我的Github仓库:https://github.com/CNFeffery/dash-master

Gitee同步仓库地址:https://gitee.com/cnfeffery/dash-master

  大家好我是费老师,上周Dash发布了2.18.0新版本,并于今天发布了可稳定使用的2.18.1版本(自古.1版本最稳✌),今天的文章中就将针对2.18.1稳定版本中已修复的问题及调整的内容做简要介绍。

  终端执行下列命令将Dash升级到最新版本:

pip install dash -U

1 修复了回调返回单个no_update进行批量控制不生效的问题

  在2.18.0之前的版本中,针对编排了多个Output角色的回调函数,若我们希望在某些条件分支下,取消本次回调触发对所有Output角色的更新,常用的方式是直接return dash.no_update,这里的单个dash.no_update就可以直接快捷概括对所有Output的不更新。

  举个简单的例子,我们通过按钮的点击来触发3个不同目标内容的更新,且当点击次数为偶数时取消更新,在之前的2.18.0版本中,这个快捷写法会触发下图所示错误:

  2.18.1版本中则对此问题进行了修复,可以看到功能正常了,即只有点击次数为奇数时才更新内容:

本例子完整代码:

app1.py

import dash
from dash import html
import feffery_antd_components as fac
from dash.dependencies import Input, Output
from feffery_dash_utils.style_utils import style

app = dash.Dash(__name__)

app.layout = html.Div(
    [
        fac.AntdSpace(
            [
                f"Dash版本: {dash.__version__}",
                fac.AntdButton("点我试试", id="demo-button", type="primary"),
                fac.AntdText(id="demo-output1"),
                fac.AntdText(id="demo-output2"),
                fac.AntdText(id="demo-output3"),
            ],
            direction="vertical",
            align="center",
        )
    ],
    style=style(padding=50),
)


@app.callback(
    [Output(f"demo-output{i}", "children") for i in range(1, 4)],
    Input("demo-button", "nClicks"),
    prevent_initial_call=True,
)
def demo_callback(nClicks):
    # 仅在nClicks为奇数时触发
    if nClicks % 2 == 1:
        return (
            f"nClicks: {nClicks}",
            f"nClicks x 2: {nClicks*2}",
            f"nClicks x 3: {nClicks*3}",
        )

    # 不更新任何内容
    return dash.no_update


if __name__ == "__main__":
    app.run(debug=True)

2 修复了全局/局部回调函数错误处理机制+字典化角色编排时的异常

  Dash 2.18版本新特性介绍一文中我们介绍了Dash2.18.0开始新增的全局/局部回调错误处理机制,但此特性在结合回调函数字典化角色编排时,会功能异常,譬如我们将上面例子中的回调函数改造为字典化编排的形式:

# 这里on_error简单写个匿名函数示意
app = dash.Dash(__name__, on_error=lambda e: print(e))

...

@app.callback(
    output=dict(
        demo_output1=Output("demo-output1", "children"),
        demo_output2=Output("demo-output2", "children"),
        demo_output3=Output("demo-output3", "children"),
    ),
    inputs=dict(nClicks=Input("demo-button", "nClicks")),
    prevent_initial_call=True,
)
def demo_callback(nClicks):
    # 仅在nClicks为奇数时触发
    if nClicks % 2 == 1:
        return dict(
            demo_output1=f"nClicks: {nClicks}",
            demo_output2=f"nClicks x 2: {nClicks*2}",
            demo_output3=f"nClicks x 3: {nClicks*3}",
        )

    # 故意触发错误
    raise Exception("自定义错误")

  在之前的2.18.0版本中,错误处理遇上字典化角色编排就会出现多余的错误:

  而在2.18.1中,此问题得到了有效修复,可以看到,示例中正常捕获到了错误:

3 开始弃用旧的run_server()方法

  Dash早期启动应用的方式为app.run_server(),后面新增了更推荐的app.run()方式。而从2.18.1版本开始,正式将app.run_server()标记为废弃方法,并将在未来的Dash3.0版本中正式移除此方法,大家统一换成app.run()即可。

  除此之外,此次版本更新中还对dash.Dash()中的pluginslong_callback_manager参数标记为废弃,完整的更新内容说明请移步https://github.com/plotly/dash/releases/tag/v2.18.1


  以上就是本文的全部内容,对Dash应用开发感兴趣的朋友,欢迎添加微信号CNFeffery,备注“dash学习”加入我们的技术交流群,一起成长一起进步。

标签:dash,Python,demo,nClicks,Dash,版本,2.18
From: https://www.cnblogs.com/feffery/p/18412555

相关文章

  • Python装饰器:一种优雅的代码增强技术
      在Python编程中,装饰器(Decorator)是一种强大且优雅的工具,它允许程序员在不修改函数或类定义的情况下,动态地添加新的功能或修改其行为。装饰器在函数式编程、Web开发、测试框架等多个领域都有广泛的应用。本文将深入探讨Python装饰器的概念、使用场景、语法特性以及如何自定......
  • ros 自定义消息(图像+标志位+位姿)python和c++发布和接受
      编译 脚本 v3_gaosi_img_pose_flag.sh#!/bin/bash#外部给与执行权限#sudochmod+xrun_ros_nodes.sh#定义ROS安装路径#安装时候添加到系统路径了不需要每次都sourceROS_SETUP="/opt/ros/noetic/setup.bash"#定义工作目录路径自己的工程没有加到系......
  • python处理时间字符串
    时间格式ISO8601标准"2024-09-11T00:00:03Z"Z的时间字符串表示UTC时间(协调世界时)。Z(Zerooffset/UTC)如果没有Z,通常还可以使用时区偏移来表示时间。例如:2024-09-11T00:00:03+08:00表示东八区的时间(比UTC提前8小时)。2024-09-11T00:00:03-05:00表示比UTC晚5小时的......
  • Python爬虫案例七:抓取南京公交信息数据并将其保存成excel多表形式
    测试链接:        https://nanjing.8684.cn/line4 思路:先抓取某个类型下的某一条线路所有数据,然后实现批量,,列举出三个类型代表既可源码:fromlxmlimportetreefromxlutils.copyimportcopyimportrequests,os,xlrd,xlwtdefget_all():#获取所......
  • Python 课程6-Pandas 和 Matplotlib库
    前言        在数据科学和数据分析领域,Pandas和Matplotlib是两个最常用的Python库。Pandas主要用于数据处理和分析,而Matplotlib则用于数据的可视化。它们的结合能够帮助我们快速、直观地展示数据的趋势和规律。在这篇详细的教程中,我将为你介绍Pandas和Matp......
  • 用命令检查自己电脑安装了哪些版本的python
    用命令检查自己电脑安装了哪些版本的pythonWindows:打开命令提示符(CommandPrompt)。输入以下命令:wherepython这将显示Python的安装路径,如果有多个版本,都会列出。你还可以使用py命令来查看所有已安装的Python版本:py-0这将列出所有可用的Python版本和......
  • 学Python需要用到哪些软件?
    Python作为一种功能全面且易于上手的编程语言,在数据科学、机器学习、web开发、数据分析等多个领域大放异彩。而为了帮助开发者更高效的编写Python代码,市面上也出现了许多优秀的Python软件,那么Python需要用到哪些软件?具体请看下文。要进行Python开发,需要以下软件:1、文......
  • 邮政EMS查询|通过python查询快递单号API
    快递聚合查询的优势1、高效整合多种快递信息。2、实时动态更新。3、自动化管理流程。聚合国内外1500家快递公司的物流信息查询服务,使用API接口查询邮政EMS物流的便捷步骤,首先选择专业的数据平台的快递API接口:https://www.tanshuapi.com/market/detail-68以下示例是参考的示例代码:im......
  • dash学习
    100多例子展示DashEnterpriseAppGallery例子源码GitHub-plotly/dash-sample-apps:Open-sourcedemoshostedonDashGallerydash学习仓 GitHub-plotly/dash-sample-apps:Open-sourcedemoshostedonDashGallerydash生物学 GitHub-plotly/dash-bio:Open-sour......
  • Python 之records教程
    目录Python之records教程一、安装二、初始化三、增,删,改,查1.增加2.删除(必须使用事务,不然不生效)3.修改(必须使用事务,不然不生效)4.查询Python之records教程一、安装pipinstallrecords二、初始化importrecords#初始化db连接,支持从环境变量DATABASE_URL读取url......