我们肯定都听说过很多次 Python 是一种动态类型的编程语言,但是不是所有人都知道我们也可以将 Python 用于网络开发。是的,这是正确的,我们可以使用 Python 进行网络开发,Python 中有许多模块可以帮助我们完成这项任务。在本教程中,我们将讨论一个这样的 Python 模块,即 Dash 模块,它帮助我们使用 Python 执行 web 开发任务。我们将首先看一下 Dash 模块的介绍,然后我们将使用 Python dash 模块构建一个基本的仪表板和 web 应用。
Python 破折号模块介绍
Dash 是一个 Python 模块或框架,用于创建许多分析 web 应用,我们可以使用 dash 框架构建分析仪表板。在 Dash 模块的帮助下,我们可以轻松地创建非常快速和响应迅速的网络仪表板,这也是非常好看的(拥有一个伟大的用户界面)。当我们使用 Dash 模块时,我们可以构建这些交互式网络仪表板,而无需事先了解一些强制性的复杂前端网络框架,如 JavaScript、HTML、CSS 等。
现在,我们已经了解了 Dash 模块是什么,并完成了它的介绍部分;是时候我们应该使用 Dash 模块构建我们的第一个仪表板了。但是,在使用 dash 框架构建 web 应用或仪表板之前,我们必须在系统中安装 Dash 模块(因为它不是 Python 中的内置模块)。一旦该模块的安装过程完成,我们将进入 Dash 模块的应用部分。
仪表板模块的安装:
在这一节中,我们将学习如何在我们的系统中安装 Dash 模块,以便我们可以将其导入 Python 程序及其函数,从而将其用作 web 框架。我们必须按照以下步骤在系统中安装 Dash 模块:
第一步:打开设备的命令提示终端,找到系统中安装 Python 的目录(使用 mkdir 命令)。
第二步:现在在终端写下以下命令,用 pip 安装程序安装 Dash 模块:
pip install dash
第三步:当我们按回车键时,pip 安装程序将开始在系统中我们定义的路径上安装 Dash 模块。
正如我们所看到的,Dash 模块已经成功安装在我们的系统中,现在我们可以通过将其导入到程序中来开始使用它。
仪表板模块的应用
现在,我们将通过构建一个基本的仪表板来学习 Dash 模块的应用,之后,我们还将使用回调来构建一个网络应用,以便我们可以在其中使用分析功能。在这两个基本实现的帮助下,我们将学习如何使用 dash 框架来构建速度非常快并且具有非常好的 UI 的 web 应用。
在本部分中,我们将使用 Dash 模块创建以下两个简单的 web 应用:
- 基本仪表板
- 带有回调的 Web 应用
创建基本仪表板:
在本节中,我们将使用一个 Python 模块中的 Dash 模块库及其功能创建一个简单的 web 仪表板。我们将在本节中创建的仪表板将是一个简单、静态但响应迅速的网络仪表板。在仪表板中,我们将使用 dash 模块在网页上构建一个静态的响应图。
我们将按照下面给出的所有步骤,使用 Dash 模块构建一个简单的仪表板:
第一步:导入所有需要的库:
首先,我们必须在 Python 程序中导入所有必需的库,这样我们就可以使用所有必需的功能来构建仪表板。我们首先要在程序中导入以下 dash 库组件:
- Dash 库
- 仪表板核心部件
- 破折号 HTML 组件
我们可以使用下面的代码在 Python 程序中导入所有这些上述必需的库:
# Importing dash library as dsh
import dash as dsh
# Importing dash core components as dc2
import dash_core_components as dc2
# Importing html components from the dash
import dash_html_components as dhc
dash 核心组件为我们提供了以下 dash 核心组件:
- 输入
- 图形
- 按钮等。
并且破折号 HTML 组件具有以下 HTML 功能组件:
- 段落标签
- 正文标签
- Meta 标签等。
第二步:设计布局:
在这一步中,我们将使用 Dash 的 HTML 组件、核心组件和库函数为我们正在构建的 web 应用设计一个布局。创建布局后,我们将制作一个图形,我们创建的图形将有各种参数。以下是我们在使用 Dash HTML 组件创建图形时将使用的参数:
- 图(将是图表本身)
- id(通过这种方式,我们将为特定的图形分配一个唯一的 ID)
- 布局(包括图形的基本布局、X 轴和 Y 轴的数据、图形的标题等。)
现在,看看我们为 web 应用创建布局和图表的代码的以下部分:
# Initializing a variable for web application
webApp = dsh.Dash()
# Creating layout for the dashboard
webApp.layout = dhc.Div(children =[
dhc.H1("Tutorial on building a web application using Dash"), # Title of the page
dc2.Graph(
id ="graphExample", # ID of graph
figure ={ # Creating Graph figure
'data':[
{'x':[1, 3, 5, 7, 9, 11, 13],
'y':[7, 6, 8, 4, 5, 9, 3],
'type':'line',
'name':'Trucks'},
{'x':[1, 3, 5, 7, 9, 11, 13],
'y':[6, 5, 7, 3, 4, 8, 2],
'type':'bar',
'name':'Ships'}
],
'layout':{ # Layout of the graph
'title':'A Basic Graph for Dashboard' # Title of the graph
}
}
)
])
在上面的程序中,我们有像 dhc.h1 或 dhc.div 这样的 html 组件,实际上就像 HTML 中的组件,其中 dhc.h1 像 HTML 中的标题,dhc.div 像 HTML 中的 div 类。我们还可以从节目的上述部分解读以下几点:
- 我们很容易理解图形参数本质上是一个字典,我们可以在其中定义像名称、类型、x、y 等元素。
- 我们在上面的代码中使用的名称参数是指与图的轴相关联的名称。
- 我们使用的类型参数是指我们希望在仪表板中投影的图形类型,它可以是直线、条形等。
- X 和 Y 可以是单个值或值列表(其中 X 和 Y 内的值分别指 X 轴和 Y 轴)。
步骤 3:创建服务器:
在我们为应用创建布局之后,仪表板已经完全准备好了,但是我们需要一个可以运行它的服务器。因此,现在我们将使用程序中的以下部分代码来设置服务器,并在服务器上运行将要创建的仪表板:
# Creating a server for the dashboard to run on it
if __name__ == '__main__':
webApp.run_server()
当我们运行程序时,它将在输出中显示默认端口链接,我们必须打开默认浏览器并运行其中的链接才能看到我们构建的 web 应用。
输出:
我们可以看到我们已经创建了一个 web 应用,一个基本的静态 web 应用。在这个 web 应用中,用户不能控制应用,我们甚至不能接受用户的输入。这就是为什么我们要构建一个网络应用,我们使用回调(在 Dash 中提供)从用户那里获取输入,并根据它给出结果。
使用 Dash 回调创建网络应用:
在本节中,我们将使用 Dash 的 Dash 功能和组件创建一个网络应用,就像我们在创建基本仪表板时使用的那样。但是我们也将使用 dash 中的回调来创建一个应用,这样我们就可以在我们构建的仪表板中接受用户输入。这里,我们不会像前面那样一步一步地构建 web 应用。我们将首先看一下下面的程序,其中我们已经创建了一个带有回调的 web 应用,然后我们将了解函数和回调在程序中的实现:
# Importing dash library as dsh
import dash as dsh
# Importing dash core components as dc2
import dash_core_components as dc2
# Importing html components from dash
import dash_html_components as dhc
# Importing dependencies for using input & output
from dash.dependencies import Input, Output
webApp = dsh.Dash()
# Layout for the application
webApp.layout = dhc.Div(children = [
# Using input to take input
dc2.Input(id = 'input'),
# Creating div class for output
dhc.Div(id ='output')
])
# Using dash callback for input and output
@webApp.callback(
# Returning the output
Output(component_id = 'output', component_property = 'children'),
# Taking the input value
[Input(component_id = 'input', component_property = 'value')]
)
# A default function to perform operation with input value
def update_value(input_data):
try:
return str(float(input_data) ** 3) # Cube of Input value
except:
return "Error, the input value given is not a numeric value" # If the input value is not a number
# Creating a server for the dashboard to run on it
if __name__ == '__main__':
webApp.run_server()
当我们运行上述程序时,服务器会将我们重定向到默认端口为 8050 的 localhost,我们必须在系统的默认浏览器中打开它,这样我们才能看到 web 应用。
输出:
当我们运行服务器并用默认端口在 web 浏览器中打开 web 应用仪表板时,应用要求输入值。当我们在框内给出输入值时,应用将计算给定数字的立方,并将运算结果作为输出值给出(我们可以在输出图像中看到这一点)。
说明:
在上面的例子中,我们使用了与第一个例子相似的逻辑,但是我们也使用了许多不同的函数和逻辑。首先,我们在这个函数中导入了一个额外的库,即 dash dependencies,以在 web 应用中使用输入和输出函数。在创建布局时,我们在这里创建了一个对话框,在其中定义了输入和输出划分类。之后,我们使用 dash 回调,这样我们就可以从用户那里获取输入,并对其执行操作,以生成输出,其中输出将是操作的结果。我们使用了异常处理,这样如果输入值不是数字,我们就可以引发错误。最后,我们创建了一个服务器,并在其上运行应用。
结论
在本教程中,我们有两个 web 应用,其中一个是静态图,另一个使用 dash 的回调。也许这些 web 应用对我们来说并没有什么用处,但是借助这些 web 应用的实现,我们现在可以了解 Dash 库的功能以及如何使用 Dash 模块来构建 web 应用。