本文示例代码已上传至我的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学习”加入我们的技术交流群,一起成长一起进步。

Python网页应用开发神器Dash 2.18.1稳定版本来啦的更多相关文章

  1. python网页爬虫开发之三

    1.抓取目录页后用lxml进行页面解析,获取抓取列表 python3.6 urlparse模块变为urllib.parse 2.Python中有一个专门生成各类假数据的库:Faker 3.python ...

  2. python网页爬虫开发之一

    1.beautifulsoap4 和 scrapy解析和下载网页的代码区别 bs可以离线解释html文件,但是获取html文件是由用户的其他行为的定义的,比如urllib或者request : 而sc ...

  3. python网页爬虫开发之六-Selenium使用

    chromedriver禁用图片,禁用js,切换UA selenium 模拟chrome浏览器,此时就是一个真实的浏览器,一个浏览器该加载的该渲染的它都加载都渲染,所以爬取网页的速度很慢.如果可以不加 ...

  4. python网页爬虫开发之五-反爬

    1.头信息检查是否频繁相同 随机产生一个headers, #user_agent 集合 user_agent_list = [  'Mozilla/5.0 (Windows NT 6.1; WOW64 ...

  5. python网页爬虫开发之七-多线程爬虫示例01

    from urllib.request import quote import urllib.request from bs4 import BeautifulSoup import re impor ...

  6. python网页爬虫开发之四-串行爬虫代码示例

    实现功能:代理.限速.深度.反爬 import re import queue import urllib.parse import urllib.robotparser import time fr ...

  7. python 全栈开发之路 day1

    python 全栈开发之路 day1   本节内容 计算机发展介绍 计算机硬件组成 计算机基本原理 计算机 计算机(computer)俗称电脑,是一种用于高速计算的电子计算机器,可以进行数值计算,又可 ...

  8. python 全栈开发,Day99(作业讲解,DRF版本,DRF分页,DRF序列化进阶)

    昨日内容回顾 1. 为什么要做前后端分离? - 前后端交给不同的人来编写,职责划分明确. - API (IOS,安卓,PC,微信小程序...) - vue.js等框架编写前端时,会比之前写jQuery ...

  9. python 全栈开发,Day45(html介绍和head标签,body标签中相关标签)

    一.html介绍 1.web标准 web准备介绍: w3c:万维网联盟组织,用来制定web标准的机构(组织) web标准:制作网页遵循的规范 web准备规范的分类:结构标准.表现标准.行为标准. 结构 ...

  10. 学习笔记之Python全栈开发/人工智能公开课_腾讯课堂

    Python全栈开发/人工智能公开课_腾讯课堂 https://ke.qq.com/course/190378 https://github.com/haoran119/ke.qq.com.pytho ...

随机推荐

  1. Solo开发者社区-重新思考云原生应用的开发模式

    当前云原生应用的开发模式在 FaaS 环境下存在挑战,本文提出一种开发模式构想:"单体式编程,编译时拆分,分布式执行",旨在简化云应用开发,提升开发效率和应用性能.思路是通过编译器 ...

  2. 可能是全网最适合入门的面向对象编程教程:Python实现-嵌入式爱好者必看!

    前言 对于嵌入式入门的同学来说,往往会遇到设备端处理能力不足.在面对大规模计算情况下需要借助上位机完成进一步的数据处理的情况.此时,Python 语言因其简单易用的特点和丰富多样的库成为了我们做上位机 ...

  3. 开源免费又好用的中式数据报表:UReport2是一款高性能的架构在Spring之上纯Java报表引擎,通过迭代单元格可以实现任意复杂的中国式报表。

    北润乾.南帆软,数加发力在云端. uReport 身何安?中式报表真开源. 报表江湖之中,uReport安身立命的产品品类定位是什么? 说来很简单,uReport的价值在于填补了这样一个市场空白:开源 ...

  4. IDEA之NexChatGPT插件【工欲善其事必先利其器】

    国内有热心的程序员开发了一款NexChatGPT插件,安装后开箱即用十分方便,打字机展示的效果也很流畅,另外插件内还外链了国内能直接访问的ChatGPT,非常推荐试一下,IDEA插件NexChatGP ...

  5. 也说一说IDEA热部署Web项目最终解决方案,确实大大提高工作效率

    热部署就是正在运行状态的应用,修改了它的源码之后,在不重新启动的情况下能够自动把增量内容编译并部署到服务器上,使得修改立即生效.热部署为了解决的问题有两个: 1.在开发的时候,修改代码后不需要重启应用 ...

  6. oeasy教您玩转vim - 34 - # 查找进阶

    ​ 查找进阶 回忆上节课内容 上次是搜索,是全文搜索 和我们以前的行内有点像 / 正向,? 反向 n 保持方向,N 改变方向 hls 让搜索结果高亮 wrapscan 可以从头搜索 noh 取消本次高 ...

  7. Nacos 高级详解:提升你的开发和部署效率

    Nacos 高级 一 .服务集群 需求 服务提供者搭建集群 服务调用者,依次显示集群中各服务的信息 搭建 修改服务提供方的controller,打印服务端端口号 package com.czxy.co ...

  8. python项目位置迁移后,虚拟环境无法使用

    一.虚拟环境无法使用问题 修改虚拟环境目录/pyvenv.cfg文件中的路径 建议以下配置全部替换一下 修改虚拟环境目录/scripts/activate.bat文件中** VIRTUAL_ENV参数 ...

  9. 人类社会学:“重男轻女"思潮的比重,从多孩男女性别比角度思考

    参考资料: https://baijiahao.baidu.com/s?id=1780697594797038227 https://mbd.baidu.com/newspage/data/video ...

  10. 【转载】 Ubuntu下使用VSCode的launch.json及tasks.json编写

    版权声明:本文为CSDN博主「子木呀」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明.原文链接:https://blog.csdn.net/qq_41687938/a ...