基于Gradio实现的增删改查(CRUD)模板系统设计方案,结合了交互界面优化与数据持久化方案,支持本地JSON存储和动态界面更新:
一、系统架构设计
-
数据存储层
- 采用JSON文件实现数据持久化(
data.json
) - 数据结构示例:
{"items": [{"id": 1, "name": "示例项目", "category": "测试", "status": "进行中"}] }
- 采用JSON文件实现数据持久化(
-
界面交互层
- 使用
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})breaksave_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
) - 支持Excel导入导出功能
- 添加操作日志记录
- 添加身份验证模块(
四、系统运行效果
-
界面特性
- 响应式布局适配不同屏幕
- 采用
gr.themes.Soft()
现代主题 - 彩色按钮区分操作类型(新增/更新/删除)
-
操作流程
五、部署与使用
- 安装依赖:
pip install gradio
- 运行命令:
python app.py
- 访问地址:`
该模板支持快速二次开发,可根据实际需求调整数据字段和业务逻辑。建议生产环境增加数据库连接(如SQLite/MySQL)和异常处理机制。