PyWebIO - 使用交互式Python构建Web应用

想要构建一个 Web 应用,提供表格和图表的展示,以及输入框输入等功能,掌握 HTML、CSS 和 Javascript 几乎是必须的。然而,对于一些入门的开发者,以及众多的数据科学研究者而言,Web 前端开发技术有一定的门槛。同时,对于这部分开发者而言,往往 Python 语言是他们最为熟悉的技术。
那么,能不能仅仅使用 Python,就能方便地构建美观好用的 Web 网页应用呢?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, FLOATfrom pywebio.output import put_textdef 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))            breakif __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 服务框架集成,和第三方可视化库的集成,使得数据的展示变得更为简单易实现。
      来源:
      https://www.toutiao.com/i6947584489849717259/

      阅读 10

      (0)

      相关推荐

      • python新手用pyinstaller -F - w test.py打包后的exe无法运行

        python新手用pyinstaller -F - w test.py打包后的exe无法运行 置顶 风很大很大 2020-03-15 09:46:46  1662  收藏 3 分类专栏: 笔记 版权 ...

      • python 无头模式

        1.1.1 Python来源(了解) Python翻译成汉语是蟒蛇的意思,并且Python的logo也是两条缠绕在一起的蟒蛇的样子,然而Python语言和蟒蛇实际上并没有一毛钱关系. Python语言 ...

      • 为什么要学Python呢?

        幸好您看到这里,表明您正在为python学习.同时,我也很高兴地告诉您,python的入门学习非常简单,如何走出python学习的这一步非常重要,希望这篇原创文章能对您有所帮助,如果对您有帮助,请与我 ...

      • 用 Python 在安卓手机上构建 Web 应用程序

        昨天 嘿,你好吗?我今年 18 岁,是一名后端开发者,我希望成为机器学习工程师.在本文中,我会介绍如何使用 Python 在手机上构建 Web 应用程序.开始吧! 必要条件 要满足的第一个条件是拥有一 ...

      • 初入门,Python和web前端如何选?

        Python和web前端想必大家都很熟悉,不过很多转行的朋友都会问:学习Python还是web前端呢?Python和Web前端哪个就业前景好?接下来小编为大家介绍一下. 其实Python和web前端都 ...

      • 如何用简单的Python编写Web应用程序?

        全文共6260字,预计学习时长13分钟 不了解任何网页框架?没关系,本文将教你如何轻松搞定从数据科学项目到超棒程序的无缝转换. 图片来源:Cody Black Unsplash 稍作休息,开始编码. ...

      • 手把手教你用Python构建logit、负二项回归、决策树与随机森林机器学习模型

        本次更新的主要内容为利用Python中的statsmodels库构建logit与负二项回归模型,以及利用sklearn库构建决策树以及随机森林模型.内容源自同济大学研究生课程<高级数理统计> ...

      • 用 Python 构建漂亮的 GUI

        用 Python 构建漂亮的 GUI Python入门与进阶 昨天 转载:https://www.jianshu.com/p/30c74a6eb145 Python入门与进阶 Python入门与进阶涵 ...

      • python量化——利用python构建Fama-French三因子模型

        工具介绍 在构建模型之前,首先介绍所需的工具. import pandas as pd import tushare as ts pro = ts.pro_api() import statsmode ...

      • 浅谈高效率交互式Python开发神器——IPython的实战

        Python编程学习圈 5天前IPython是一种基于Python的交互式解释器,提供了强大的编辑和交互功能.它支持变量自动补全,自动缩进,支持Bash Shell命令,内置大量很有用的功能和函数.P ...

      • 25个构建Web项目的HTML建议,你需要了解一下!

        WEB前端开发社区 今天 html 超文本标记语言是一种用于创建网页的标准标记语言.html是一种基础技术,常与css.JavaScript一起被众多网站用于设计网页.网页应用程序以及移动应用程序的用 ...

      • 使用Opencv和Python构建贪吃蛇小游戏

        重磅干货,第一时间送达 来源丨https://blog.csdn.net/ZeroSwift/article/details/112172663 编辑丨AI算法与图像处理 导读 本文详细介绍贪吃蛇小游 ...