Dash 是一个通过 python 语言来开发 web 界面,并在运行时将前端编译成 html/js/css 并运行的框架。它使得Python程序也可以成为全栈开发工程师。其主要特点是:
-
完全使用 Python 来开发,无论是界面元素还是服务端逻辑。Dash 不仅负责将 python 编写的界面元素转化为 html/js/css,而且负责前端与后端的交互。因此,程序员可以完全在 python 语言框架内完成全部工作。
-
Dash 内置 flask 服务器,因此 flask 的诸多运行机制也一样适用,比如可以如下获取 cookie:
import flask
flask.request.cookies.get("your cookie name")
上述代码可以在全局使用,也可以 callback 方法中使用(这里的 callback 特指 Dash 的 app.callback)。
- 与 plotly 无缝集成,具有较强的可视化能力。尤为可贵的是,可视化是 web 交互式的,但又完全是通过 Python 来编程的(注意 javascript 提供了交互能力,而 python 是不可能的)。
这一篇文章是我们在深入体验过Dash之后,就它的核心概念、路由、Auth等等进行的梳理,还介绍了一些常见的pitfall。

我是量化风云,量化从业者,有多年量化框架和策略的研发经验。欢迎关注!如果需要本地化部署量化投研框架,可以使用 Zillionare 2.0。它基于Influxdb构建,目前在生产环境下已存储超过35亿条海量行情数据。
1. 核心概念
在一般的 web 编程中,我们通常要为视图准备两个 handler,一个响应 GET 请求,提供初始化的界面,供用户操作;另一个响应 POST 请求,接收用户提交的数据,进行处理后,再重定向到新的视图。
在 Dash 中,上述交互对用户是不可见的。我们准备一个视图,通过 callback 来处理用户的输入。当用户在前端进行输入时,dash 自动将这些消息 (click 事件或者值变更)及时传递给后端,应用在则 callback 中得到这些输入值,完成校验,将结果更新到同一个视图中的某些控件上,或者输出一个新的视图(如果指定的 Output 中绑定了某个 html 控件的 children 属性的话)。
layout = dbc.Container(
[
html.Br(),
dbc.Container(
[
dcc.Location(id="urlLogin", pathname="/login", refresh=True),
html.Div(
[
dbc.Container(
html.Img(
src="/assets/dash-logo-stripe.svg", className="center"
),
),
dbc.Container(
id="loginType",
children=[
dcc.Input(
placeholder="Enter your username",
type="text",
id="usernameBox",
className="form-control",
n_submit=0,
),
html.Br(),
dcc.Input(
placeholder="Enter your password",
type="password",
id="passwordBox",
className="form-control",
n_submit=0,
),
html.Br(),
html.Button(
children="Login",
n_clicks=0,
type="submit",
id="loginButton",
className="btn btn-primary btn-lg",
)

文章介绍了Dash,一个使用Python开发Web界面的框架,其特点包括全Python开发、前后端交互、与Plotly集成和强大的可视化能力。文章详细讲解了Dash的核心概念、路由机制、Auth认证等,并分享了使用实例和常见问题解决方法。
6340

被折叠的 条评论
为什么被折叠?



