Plotly Dash - 让Python程序员也会做网页!

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

Dash 是一个通过 python 语言来开发 web 界面,并在运行时将前端编译成 html/js/css 并运行的框架。它使得Python程序也可以成为全栈开发工程师。其主要特点是:

  1. 完全使用 Python 来开发,无论是界面元素还是服务端逻辑。Dash 不仅负责将 python 编写的界面元素转化为 html/js/css,而且负责前端与后端的交互。因此,程序员可以完全在 python 语言框架内完成全部工作。

  2. Dash 内置 flask 服务器,因此 flask 的诸多运行机制也一样适用,比如可以如下获取 cookie:

import flask

flask.request.cookies.get("your cookie name")

上述代码可以在全局使用,也可以 callback 方法中使用(这里的 callback 特指 Dash 的 app.callback)。

  1. 与 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",
                                )
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

量化风云

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值