基于Gradio实现的增删改查(CRUD)模板系统设计方案
基于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})
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
) - 支持Excel导入导出功能
- 添加操作日志记录
- 添加身份验证模块(
四、系统运行效果
-
界面特性
- 响应式布局适配不同屏幕
- 采用
gr.themes.Soft()
现代主题 - 彩色按钮区分操作类型(新增/更新/删除)
-
操作流程
五、部署与使用
- 安装依赖:
pip install gradio
- 运行命令:
python app.py
- 访问地址:`
该模板支持快速二次开发,可根据实际需求调整数据字段和业务逻辑。建议生产环境增加数据库连接(如SQLite/MySQL)和异常处理机制。