想要构建一个 Web 应用,提供表格和图表的展示,以及输入框输入等功能,掌握 HTML、CSS 和 Javascript 几乎是必须的。然而,对于一些入门的开发者,以及众多的数据科学研究者而言,Web 前端开发技术有一定的门槛。同时,对于这部分开发者而言,往往 python 语言是他们最为熟悉的技术。
那么,能不能仅仅使用 Python,就能方便地构建美观好用的 Web 网页应用呢?PyWebIO 使这成为可能。
PyWebIO
简介
PyWebIO,是 wang0618 在 Github 上开源的交互式 Python Web 应用构建平台,目前版本为 v1.2.3。
PyWebIO提供了一系列命令式的交互函数来在浏览器上获取用户输入和进行输出,将浏览器变成了一个“富文本终端”,可以用于构建简单的Web应用或基于浏览器的GUI应用。 PyWebIO还可以方便地整合进现有的Web服务,让你不需要编写HTML和JS代码,就可以构建出具有良好可用性的应用。
PyWebIO
使用
PyWebIO 功能强大,且
- 使用同步而不是基于回调的方式获取输入,代码编写逻辑更自然
- 非声明式布局,布局方式简单高效
- 代码侵入性小,旧脚本代码仅需修改输入输出逻辑便可改造为Web服务
- 支持整合到现有的Web服务,目前支持与Flask、Django、Tornado、aiohttp、FastAPI框架集成
- 同时支持基于线程的执行模型和基于协程的执行模型
- 支持结合第三方库实现数据可视化
使用 PyWebIO,我们可以很简单地构建较为复杂的网页应用。
PyWebIO
从上图可以看到,通过实时输入 Python 命令,我们得到了一个展示数据表格、图片、公式、按钮的网页应用。
我们还可以构建能够进行数据输入的网页,,同样通过 Python 命令,实时构建一个表单:
PyWebIO
PyWebIO 要求 Python 3.5.2+,使用 PyPI 安装:
pip3 install -U pywebio
我们来看一个简单的例子,实现一个简单的计算 BMI 指数的脚本:
from pywebio.input import input, FLOAT
from pywebio.output import put_text
def bmi():
height = input("请输入你的身高(cm):", type=FLOAT)
weight = input("请输入你的体重(kg):", type=FLOAT)
BMI = weight / (height / 100) ** 2
top_status = [(14.9, '极瘦'), (18.4, '偏瘦'),
(22.9, '正常'), (27.5, '过重'),
(40.0, '肥胖'), (float('inf'), '非常肥胖')]
for top, status in top_status:
if BMI <= top:
put_text('你的 BMI 值: %.1f,身体状态:%s' % (BMI, status))
break
if __name__ == '__main__':
bmi()
可以看到,这个脚本的核心只是简单地对输入的体重和身高进行 BMI 指数的计算,然后按范围判断胖瘦程度,最终输出结果。
如果使用标准命令行的输入输出,这就只是一个命令行脚本程序而已。而当使用了 pywebio 提供的输入输出函数后,运行程序,就能够自动生成一个网页应用,拥有两个输入框,分别输入身高和体重,最终计算展示 BMI 指数结果。
PyWebIO
你可以按照编写控制台程序的逻辑编写PyWebIO应用,只不过这里的终端变成了浏览器。通过PyWebIO提供的命令式API, 你可以简单地调用 put_text 、 put_image 、 put_table 等函数输出文本、图片、表格等内容到浏览器,也可以调用 input 、 select 、 file_upload 等函数在浏览器上显示不同表单来接收用户的输入。此外PyWebIO中还提供了点击事件、布局等支持,让你可以使用最少的代码完成与用户的交互, 并尽可能提供良好的用户体验。
在PyWebIO中,有两种方式用来运行PyWebIO应用:作为脚本运行和使用 start_server() 或 path_deploy() 来作为Web服务运行:
- 在Server模式下,PyWebIO会启动一个Web服务来持续性地提供服务。当用户访问服务地址时,PyWebIO会开启一个新会话并运行PyWebIO应用。
- Script模式下,在任何位置都可以调用PyWebIO的交互函数。如果用户在会话结束之前关闭了浏览器,那么之后会话内对于PyWebIO交互函数的调用将会引发一个 SessionException 异常。
可以将PyWebIO应用集成到现有的Python Web项目中,PyWebIO应用与Web项目共用一个Web框架。目前支持与Flask、Tornado、Django和aiohttp Web框架的集成。
PyWebIO 提供了丰富的第三方生态,其中比较重要的就是数据可视化。对于数据科学研究者而言,可以不必学习 Web 前端技术,也不必安装各种复杂的环境,就能实现一个可以向其他人展示数据结果的 Web 应用,这是十分便利的。PyWebIO 提供了包括 Bokeh、plotly、cutecharts.py、Pyecharts 等1可视化库的集成,能够十分方便地完成数据的可视化。
PyWebIO
PyWebIO
总结
PyWebIO 提供了一系列命令式的交互函数,来在浏览器上获取用户输入和进行输出,可以构建 Web 应用或基于浏览器的 GUI 应用,而无需学习前端相关技术。PyWebIO 还提供了 Web 服务框架集成,和第三方可视化库的集成,使得数据的展示变得更为简单易实现。
关于Python技术储备
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析学习等教程。带你从零基础系统性的学好Python!
一、Python学习大纲
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
二、Python必备开发工具
三、入门学习视频
四、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
五、python副业兼职与全职路线
上述这份完整版的Python全套学习资料已经上传CSDN官方,如果需要可以微信扫描下方CSDN官方认证二维码 即可领取
👉[[CSDN大礼包:《python兼职资源&全套学习资料》免费分享]](安全链接,放心点击)