基于Gradio实现的增删改查(CRUD)模板系统设计方案,结合了交互界面优化与数据持久化方案,支持本地JSON存储和动态界面更新:
数据存储层
data.json
){
"items": [
{"id": 1, "name": "示例项目", "category": "测试", "status": "进行中"}
]
}
界面交互层
gr.Blocks
实现多组件布局import gradio as gr
import json
from uuid import uuid4
# 初始化数据存储
def init_db():
try:
with open("data.json", "r") as f:
return json.load(f)
except FileNotFoundError:
return {"items": []}
DB = init_db()
# 数据操作函数
def save_data():
with open("data.json", "w") as f:
json.dump(DB, f, indent=2)
def create_item(name, category, status):
new_item = {
"id": str(uuid4()),
"name": name,
"category": category,
"status": status
}
DB["items"].append(new_item)
save_data()
return gr.update(value=DB["items"]), "", "", ""
def delete_item(item_id):
DB["items"] = [item for item in DB["items"] if item["id"] != item_id]
save_data()
return gr.update(value=DB["items"])
def update_item(item_id, name, category, status):
for item in DB["items"]:
if item["id"] == item_id:
item.update({"name": name, "category": category, "status": status})
break
save_data()
return gr.update(value=DB["items"])
# 界面构建
with gr.Blocks(title="CRUD管理系统", theme=gr.themes.Soft()) as app:
with gr.Row():
gr.Markdown("# 数据管理系统")
with gr.Row():
# 数据展示区
data_table = gr.DataFrame(
headers=["ID", "名称", "分类", "状态"],
datatype=["str", "str", "str", "str"],
interactive=False,
value=DB["items"]
)
with gr.Row():
# 操作表单
with gr.Column():
item_id = gr.Textbox(label="记录ID(编辑时需填写)")
name = gr.Textbox(label="项目名称")
category = gr.Dropdown(["技术", "运营", "财务"], label="分类")
status = gr.Radio(["进行中", "已完成", "已暂停"], label="状态")
with gr.Row():
create_btn = gr.Button("新增", variant="primary")
update_btn = gr.Button("更新", variant="secondary")
delete_btn = gr.Button("删除", variant="stop")
# 事件绑定
create_btn.click(
create_item,
inputs=[name, category, status],
outputs=[data_table, name, category, status]
)
delete_btn.click(
delete_item,
inputs=[item_id],
outputs=[data_table]
)
update_btn.click(
update_item,
inputs=[item_id, name, category, status],
outputs=[data_table]
)
if __name__ == "__main__":
app.launch()
数据验证增强
高级功能扩展
# 添加搜索功能
def search_items(keyword):
results = [item for item in DB["items"]
if keyword.lower() in item["name"].lower()]
return gr.update(value=results)
# 添加统计功能
def show_stats():
categories = len(set(item["category"] for item in DB["items"]))
return f"总项目数: {len(DB['items'])} | 分类数: {categories}"
部署优化
gr.LoginButton
)界面特性
gr.themes.Soft()
现代主题操作流程
五、部署与使用
pip install gradio
python app.py
该模板支持快速二次开发,可根据实际需求调整数据字段和业务逻辑。建议生产环境增加数据库连接(如SQLite/MySQL)和异常处理机制。