以脚本方式编写web应用程序。

pywebio的Python项目详细描述


PyWebIO是一个用于在浏览器上获取输入和进行输出的工具库。能够将原有的通过终端交互的脚本快速服务化,供其他人在网络上通过浏览器访问使用; PyWebIO还可以方便地整合进现有的Web服务,让你不需要编写Html和JS代码,就可以构建出具有良好可用性的Web程序。

特点:

  • 使用同步而不是基于回调的方式获取输入,无需在各个步骤之间保存状态,使用更方便
  • 代码侵入性小,对于旧脚本代码仅需修改输入输出逻辑
  • 支持多用户与并发请求
  • 支持结合第三方库实现数据可视化
  • 支持整合到现有的Web服务,目前支持与Flask、Django、Tornado、aiohttp框架集成
  • 同时支持基于线程的执行模型和基于协程的执行模型

Install

PyPi安装:

pip3 install -U pywebio

目前PyWebIO处于快速开发迭代中,PyPi上的包更新可能滞后,建议使用源码安装:

pip3 install -U https://code.aliyun.com/wang0618/pywebio/repository/archive.zip

系统要求: PyWebIO要求 Python 版本在 3.5.2 及以上

Quick start

Hello, world

这是一个使用PyWebIO计算 BMI指数 的脚本:

frompywebio.inputimportinput,FLOATfrompywebio.outputimportput_textdefbmi():height=input("请输入你的身高(cm):",type=FLOAT)weight=input("请输入你的体重(kg):",type=FLOAT)BMI=weight/(height/100)**2top_status=[(14.9,'极瘦'),(18.4,'偏瘦'),(22.9,'正常'),(27.5,'过重'),(40.0,'肥胖'),(float('inf'),'非常肥胖')]fortop,statusintop_status:ifBMI<=top:put_text('你的 BMI 值: %.1f,身体状态:%s'%(BMI,status))breakif__name__=='__main__':bmi()

如果没有使用PywWebIO,这只是一个非常简单的脚本,而通过使用PywWebIO提供的输入输出函数,你可以在浏览器中与代码进行交互:

向外提供服务

上文对使用PyWebIO进行改造的程序,运行模式还是脚本,程序计算完毕后立刻退出。可以使用 ^{}bmi() 函数作为Web服务提供:

frompywebioimportstart_serverfrompywebio.inputimportinput,FLOATfrompywebio.outputimportput_textdefbmi():...# bmi() 函数内容不变if__name__=='__main__':start_server(bmi)

[demo]

与现有Web框架整合

仅需在现有的Tornado应用中加入加入两个 RequestHandler ,就可以将使用PyWebIO编写的函数整合进Tornado应用中

importtornado.ioloopimporttornado.webfrompywebio.platform.tornadoimportwebio_handlerfrompywebioimportSTATIC_PATHclassMainHandler(tornado.web.RequestHandler):defget(self):self.write("Hello, world")if__name__=="__main__":application=tornado.web.Application([(r"/",MainHandler),(r"/bmi/io",webio_handler(bmi)),# bmi 即为上文计算BMI指数的函数(r"/bmi/(.*)",tornado.web.StaticFileHandler,{"path":STATIC_PATH,'default_filename':'index.html'})])application.listen(port=80,address='localhost')tornado.ioloop.IOLoop.current().start()

http://localhost/bmi/ 页面上就可以计算BMI了

Demos

  • 数据可视化demo : 使用 bokeh、plotly、pyecharts 等库创建图表
  • 其他demo : 包含PyWebIO基本输入输出演示和使用PyWebIO编写的小应用

Document

使用手册和实现文档见 https://pywebio.readthedocs.io

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java有没有一种方法可以比较两个html文件以跟踪更改   Android中复杂WCF响应的java解析   java如何使用onSaveInstanceState保存复选框状态   java使用流api将流<@Nullable T>转换为流<@NonNull T>   java我需要使用可比较的界面比较两个形状,以确定哪个比另一个大或小   java在返回可能的alreadyset实例时,DeferredResult是否有竞争条件?   Java:FTP服务器列表的正则表达式?   java如何连接数组   java填充屏幕Android不能使用S3 S4屏幕分辨率   用于Java的安卓mapsutils?   安卓运行时异常:无法启动活动组件信息:java。lang.NullPointerException致命异常   java JComboBox列出了对象ArrayList中的字符串   java如何在遗传算法中表示时间表问题的时间表?   Java中空指针异常的帮助   由于找不到列,java Hibernate联接表策略多态性不起作用   java元映射运行本地raise“查询Prolog服务器时出错:连接被拒绝”   java是否创建一个具有不同目标对象的方法引用列表?   java所有线程都被锁定了?