Python网页应用开发神器Dash 2.18.1稳定版本来啦
本文示例代码已上传至我的
Github仓库:https://github.com/CNFeffery/dash-masterGitee同步仓库地址: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版本新特性介绍一文中我们介绍了Dash从2.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()中的plugins、long_callback_manager参数标记为废弃,完整的更新内容说明请移步https://github.com/plotly/dash/releases/tag/v2.18.1。
以上就是本文的全部内容,对Dash应用开发感兴趣的朋友,欢迎添加微信号CNFeffery,备注“dash学习”加入我们的技术交流群,一起成长一起进步。
Python网页应用开发神器Dash 2.18.1稳定版本来啦的更多相关文章
- python网页爬虫开发之三
1.抓取目录页后用lxml进行页面解析,获取抓取列表 python3.6 urlparse模块变为urllib.parse 2.Python中有一个专门生成各类假数据的库:Faker 3.python ...
- python网页爬虫开发之一
1.beautifulsoap4 和 scrapy解析和下载网页的代码区别 bs可以离线解释html文件,但是获取html文件是由用户的其他行为的定义的,比如urllib或者request : 而sc ...
- python网页爬虫开发之六-Selenium使用
chromedriver禁用图片,禁用js,切换UA selenium 模拟chrome浏览器,此时就是一个真实的浏览器,一个浏览器该加载的该渲染的它都加载都渲染,所以爬取网页的速度很慢.如果可以不加 ...
- python网页爬虫开发之五-反爬
1.头信息检查是否频繁相同 随机产生一个headers, #user_agent 集合 user_agent_list = [ 'Mozilla/5.0 (Windows NT 6.1; WOW64 ...
- python网页爬虫开发之七-多线程爬虫示例01
from urllib.request import quote import urllib.request from bs4 import BeautifulSoup import re impor ...
- python网页爬虫开发之四-串行爬虫代码示例
实现功能:代理.限速.深度.反爬 import re import queue import urllib.parse import urllib.robotparser import time fr ...
- python 全栈开发之路 day1
python 全栈开发之路 day1 本节内容 计算机发展介绍 计算机硬件组成 计算机基本原理 计算机 计算机(computer)俗称电脑,是一种用于高速计算的电子计算机器,可以进行数值计算,又可 ...
- python 全栈开发,Day99(作业讲解,DRF版本,DRF分页,DRF序列化进阶)
昨日内容回顾 1. 为什么要做前后端分离? - 前后端交给不同的人来编写,职责划分明确. - API (IOS,安卓,PC,微信小程序...) - vue.js等框架编写前端时,会比之前写jQuery ...
- python 全栈开发,Day45(html介绍和head标签,body标签中相关标签)
一.html介绍 1.web标准 web准备介绍: w3c:万维网联盟组织,用来制定web标准的机构(组织) web标准:制作网页遵循的规范 web准备规范的分类:结构标准.表现标准.行为标准. 结构 ...
- 学习笔记之Python全栈开发/人工智能公开课_腾讯课堂
Python全栈开发/人工智能公开课_腾讯课堂 https://ke.qq.com/course/190378 https://github.com/haoran119/ke.qq.com.pytho ...
随机推荐
- WSL2连接USB设备(以USRP B210为例)
使用WSL2时,发现其无法直接识别到宿主机上插入的USB设备. 可利用USPIPD-WIN项目进行连接. 以下以USRP B210设备连接为例,展示连接过程: 安装USBIPD-WIN 项目 参考连接 ...
- 全网最适合入门的面向对象编程教程:05 类和对象的Python实现-PyCharm代码标签(一个帮你提升coding效率的小技巧)
摘要: 本文介绍了PyCharm IDE中代码标签的定义.类型和使用方法. 往期推荐: 学嵌入式的你,还不会面向对象??! 全网最适合入门的面向对象编程教程:00 面向对象设计方法导论 全网最适合入门 ...
- Nginx 可视化配置神器NginxConfig
Nginx 是前后端开发工程师必须掌握的神器.该神器有很多使用场景:比如反向代理.负载均衡.动静分离.跨域等等. 把 Nginx 下载下来打开 conf 文件夹的 nginx.conf 文件,Ngin ...
- 数学工具 | 如何将图片公式快速输入到Word中?
背景: 在日常科研.学习与工作中,我们可能需要使用到某些书籍.期刊或者规范上的公式,但是如果自己纯手打则会相当麻烦(数学系LaTeX高手请忽略),因此如果有工具能够解决这个问题,那真的是解决了一大痛点 ...
- 载均衡技术全解析:Pulsar 分布式系统的最佳实践
背景 Pulsar 有提供一个查询 Broker 负载的接口: /** * Get load for this broker. * * @return * @throws PulsarAdminExc ...
- vscode element-plus/lib/theme-chalk/index.css报错路径找不到
vscode element-plus/lib/theme-chalk/index.css报错路径找不到 import { createApp } from 'vue' import './styl ...
- ComfyUI进阶:Comfyroll插件 (五)
ComfyUI进阶:Comfyroll插件 (五) 前言: 学习ComfyUI是一场持久战,而Comfyroll 是一款功能强大的自定义节点集合,专为 ComfyUI 用户打造,旨在提供更加丰富和专业 ...
- 单细胞测序最好的教程(八): 细胞类型自动注释-1|基于marker的自动注释
作者按 本章节主要讲解了基于marker的自动注释方法,一般来说,我会先自动注释,再手动去确认marker,这是因为,对于一个陌生的组织,我对marker是不了解的,自动注释可以帮助我快速熟悉细胞类型 ...
- 图书《数据资产管理核心技术与应用》核心章节节选-3.1.2. 从Spark 执行计划中获取数据血缘
本文节选自清华大学出版社出版的图书<数据资产管理核心技术与应用>,作者为张永清等著. 从Spark 执行计划中获取数据血缘 因为数据处理任务会涉及到数据的转换和处理,所以从数据任务中解析血 ...
- 【JavaScript】下拉联动回显问题
首先是多级下拉联动实现: 这是DOM结构: <div> <label style="margin-left: 10px;display: inline-block;&quo ...