使用PyWebIO小白也能做出自己的网站

大邓和他的Python

共 3304字,需浏览 7分钟

 · 2021-04-23


作者:wang0618


原创地址 https://github.com/wang0618/PyWebIO

PyWebIO

PyWebIO提供了一系列命令式的交互函数来在浏览器上获取用户输入和进行输出,将浏览器变成了一个“富文本终端”,可以用于构建简单的Web应用或基于浏览器的GUI应用。使用PyWebIO,开发者能像编写终端脚本一样(基于input和print进行交互)来编写应用,无需具备HTML和JS的相关知识;PyWebIO还可以方便地整合进现有的Web服务。非常适合快速构建对UI要求不高的应用。

特性

使用同步而不是基于回调的方式获取输入,代码编写逻辑更自然非声明式布局,布局方式简单高效代码侵入性小,旧脚本代码仅需修改输入输出逻辑便可改造为Web服务支持整合到现有的Web服务,目前支持与Flask、Django、Tornado、aiohttp框架集成同时支持基于线程的执行模型和基于协程的执行模型支持结合第三方库实现数据可视化

Installation

稳定版:

pip3 install -U pywebio

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

Hello, world

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

from pywebio.input import input, FLOATfrom 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()

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


作为Web服务提供

上文BMI程序会在计算完毕后立刻退出,可以使用 pywebio.start_server()[3] 将 bmi() 函数作为Web服务提供:

from pywebio import start_serverfrom pywebio.input import input, FLOATfrom pywebio.output import put_text
def bmi(): # bmi() 函数内容不变 ...
if __name__ == '__main__': start_server(bmi, port=80)

与现有Web框架整合

Tornado应用整合:仅需在现有的Tornado应用中添加一个 RequestHandler ,就可以将PyWebIO应用整合进Tornado Web服务中

import tornado.ioloopimport tornado.webfrom pywebio.platform.tornado import webio_handler
class MainHandler(tornado.web.RequestHandler): def get(self): self.write("Hello, world")
if __name__ == "__main__": application = tornado.web.Application([ (r"/", MainHandler), (r"/bmi", webio_handler(bmi)), # bmi 即为上文计算BMI指数的函数 ]) application.listen(port=80, address='localhost') tornado.ioloop.IOLoop.current().start()

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

与其他Web框架整合请见文档[4]

Demos

基本demo[5] : 包含PyWebIO基本输入输出演示和使用PyWebIO编写的小应用数据可视化demo[6] : 使用 bokeh、plotly、pyecharts 等库进行数据可视化

Document

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

ss

References

[1] BMI指数: https://en.wikipedia.org/wiki/Body_mass_index
[2] [demo]: http://pywebio-demos.demo.wangweimin.site/bmi
[3] pywebio.start_server()https://pywebio.readthedocs.io/zh_CN/latest/platform.html#pywebio.platform.tornado.start_server
[4] 文档: https://pywebio.readthedocs.io/zh_CN/latest/guide.html#web
[5] 基本demo: http://pywebio-demos.demo.wangweimin.site/
[6] 数据可视化demo: http://pywebio-charts.demo.wangweimin.site/

扫码免费领1万代理IP,高并发不限制,稳定速度快,快去薅羊毛吧!

精选文章

系列视频|Python网络爬虫与文本数据分析
B站视频 | Python自动化办公
SciencePlots | 科研样式绘图库
使用streamlit上线中文文本分析网站
bsite库 | 采集B站视频信息、评论数据
texthero包 | 支持dataframe的文本分析包
爬虫实战 | 采集&可视化知乎问题的回答
reticulate包 | 在Rmarkdown中调用Python代码
plydata库 | 数据操作管道操作符>>
plotnine: Python版的ggplot2作图库
读完本文你就了解什么是文本分析
文本分析在经管领域中的应用概述  
综述:文本分析在市场营销研究中的应用
plotnine: Python版的ggplot2作图库
Wow~70G上市公司定期报告数据集
漂亮~pandas可以无缝衔接Bokeh  
YelpDaset: 酒店管理类数据集10+G  

    分享”和“在看”是更好的支持

浏览 115
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报