不会前端代码,也能用纯Python来实现一个web应用啦

发布于:2024-01-28 ⋅ 阅读:(264) ⋅ 点赞:(0)

下面简单介绍两个很棒的,无需编写任何前端代码,也能快速创建前端应用的Python工具!

Streamlit

Streamlit是一个基于Python的Web应用程序框架。它的集成度非常高,将常见的Web组件如输入框、复选框、下载按钮、滑块、滚动条、警告信息等常见的Web组件完整地打包入API里了,并使用markdown作为自己的文本后端。

这个框架的使用特别简单,只需写几行简单的代码就可以构建强大的Web应用程序,还可以导出为html和pdf,或者部署在网上远程访问。

在需要快速构建web服务的情况下,Streamlit是一个非常好的选择。

示例


import streamlit as st
import pandas as pd

st.title('Hello World')

x = st.slider('请选择一个值')
st.write(x, '该值的平方是:', x * x)

data = pd.DataFrame({
  'Name': ['张三', '李四', '王五'],
  'Age': [20, 21, 19]
})

st.write(data)

缓存

如果我们的Web应用需要处理大规模数据或进行复杂运算,那么Streamlit的@st.cache_data装饰器会是一个好帮手。加了它,函数的运算结果会被缓存,直到检测到输入值变化,才会重新运算。有了它,我们就不用每次刷新页面,都要等待耗时运算了。


import pandas as pd
import time

st.title('Hello World')

@st.cache_data
def cal(n):
    time.sleep(3)
    return pd.DataFrame({
        'Number': list(range(n)),
    })


n = st.slider('请选择一个数值:', 0, 10)
st.write(cal(n))

PyWebIO

PyWebIO是另外一个用于创建简单的Web应用的Python包,它和Streamlit的根本区别在于代码的执行过程不同。

Streamlit是应答式的,例如用户每次与一个窗口部件交互的时候,脚本都会从头重新执行,所有窗口部件都跟着更新。

PyWebIO则像执行一系列终端命令一样线性的顺序执行代码。输出函数实时地把内容显示在浏览器中,输入函数会阻断代码的执行,直到用户输入数据,有点像Python的内置函数input(),只是把input()变成了图形界面。这样开发人员通过替换输入和输出函数能很容易地把已存在的终端程序转化为Web应用。

示例

from pywebio.output import *
from pywebio import session

# 网页上显示纯文本
put_text("Hello friend!")

# 网页上显示表格
put_table([
    ['Object', 'Unit'],
    ['A', '55'],
    ['B', '73'],
])

# 网页上显示 MarkDown
put_markdown('~~PyWebIO~~')

# 网页上显示下载文件的链接
put_file('output_file.txt', b'You can put anything here')

# 网页上显示图片
put_image(open('python_logo.png', 'rb').read())

# 网页上显示弹窗
popup('popup title', 'popup text content')

# 保持回话是打开状态,否则页面显示完毕程序退出
session.hold()

怎么样,很nice吧,还不快点赞呀

本文含有隐藏内容,请 开通VIP 后查看

网站公告


今日签到

点亮在社区的每一天
去签到