PyWebIO 交互式网页开发:无 HTML 也能搞定表单

前言

PyWebIO 是一个纯 Python 库,帮助开发者用最少的代码创建交互式网页应用,无需写任何 HTML/CSS/JS,适合快速开发小工具、教学演示和数据采集。

一、PyWebIO 简介

  • 纯 Python,零前端经验门槛

  • 支持输入输出控件:文本框、下拉、单选、多选、表格等

  • 可直接用浏览器访问,无需前端框架

  • 支持多种部署方式:本地、服务器、Docker

二、安装与启动

pip install pywebio

示例代码:

from pywebio.input import input, select
from pywebio.output import put_text
from pywebio import start_server

def main():
    name = input("请输入你的名字")
    gender = select("请选择性别", options=['男', '女', '保密'])
    put_text(f"你好,{name},你选择了 {gender}")

if __name__ == '__main__':
    start_server(main, port=8080)

浏览器访问 http://localhost:8080

在这里插入图片描述

三、丰富控件演示

  • input(), textarea(), checkbox(), radio(), select()

  • 文件上传 file_upload()

  • 输出文本、图片、表格

  • 异步任务与进度条

示例:

from pywebio.input import input, textarea, checkbox
from pywebio.output import put_table

def survey():
    name = input("请输入姓名")
    hobbies = checkbox("请选择爱好", options=['看书', '运动', '游戏'])
    put_table([
        ['姓名', name],
        ['爱好', ', '.join(hobbies)]
    ])

if __name__ == '__main__':
    start_server(survey, port=8080)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、部署方式

  • 本地启动(start_server
python app.py
  • WSGI 兼容部署(gunicorn)
pip install gunicorn
gunicorn -w 4 app_wsgi:application  # -w指定工作进程数
  • 集成到 Flask / Django 中作为子模块
# app_flask.py
from flask import Flask, request
from pywebio.platform.flask import pywebio_app
from pywebio.input import input, select
from pywebio.output import put_text

app = Flask(__name__)

# 定义PyWebIO路由
@pywebio_app('/pywebio')  # 访问路径为 /pywebio
def my_app():
    name = input("请输入名字")
    gender = select("选择性别", ['男', '女', '保密'])
    put_text(f"你好,{name}{gender})")

# 可选:添加Flask原生路由
@app.route('/')
def index():
    return "欢迎来到Flask首页!<a href='/pywebio'>进入PyWebIO应用</a>"

if __name__ == '__main__':
    app.run(debug=True)

python app.py
# views.py
from django.http import HttpResponse
from pywebio.platform.django import pywebio_app
from pywebio.input import input, select
from pywebio.output import put_text

# 定义PyWebIO视图
@pywebio_app
def my_app(request):
    name = input("请输入名字")
    gender = select("选择性别", ['男', '女', '保密'])
    put_text(f"你好,{name}{gender})")
    return HttpResponse("PyWebIO会话已结束")


# urls.py
from django.urls import path
from . import views

urlpatterns = [
    path('pywebio/', views.my_app, name='pywebio'),
    path('', lambda r: HttpResponse("欢迎来到Django首页!<a href='/pywebio'>进入PyWebIO应用</a>"))
]
python app.py runserver

五、总结

优点局限
零前端门槛不适合大型复杂项目
快速搭建交互界面页面美观度有限
支持多种输入控件灵活性有限,布局简单

一句话总结: PyWebIO 是快速原型和轻量级数据采集的神器,无需任何前端经验!

六、参考

《Python 前端框架/工具合集》
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

勤奋的知更鸟

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值