当前位置: 首页 > article >正文

基于Gradio实现的增删改查(CRUD)模板系统设计方案

基于Gradio实现的增删改查(CRUD)模板系统设计方案,结合了交互界面优化与数据持久化方案,支持本地JSON存储和动态界面更新:


一、系统架构设计

  1. 数据存储层

    • 采用JSON文件实现数据持久化(data.json
    • 数据结构示例:
    {
        "items": [
            {"id": 1, "name": "示例项目", "category": "测试", "status": "进行中"}
        ]
    }
    
  2. 界面交互层

    • 使用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()

三、功能扩展建议

  1. 数据验证增强

    • 添加输入格式校验(如名称长度限制)
    • 实现唯一性校验(防止重复名称)
  2. 高级功能扩展

    # 添加搜索功能
    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}"
    
  3. 部署优化

    • 添加身份验证模块(gr.LoginButton
    • 支持Excel导入导出功能
    • 添加操作日志记录

四、系统运行效果

  1. 界面特性

    • 响应式布局适配不同屏幕
    • 采用gr.themes.Soft()现代主题
    • 彩色按钮区分操作类型(新增/更新/删除)
  2. 操作流程

    新增
    编辑
    删除
    启动系统
    显示数据表格
    选择操作
    填写表单提交
    选择记录修改
    确认删除
    D/E/F
    实时更新表格

五、部署与使用

  1. 安装依赖:pip install gradio
  2. 运行命令:python app.py
  3. 访问地址:`

该模板支持快速二次开发,可根据实际需求调整数据字段和业务逻辑。建议生产环境增加数据库连接(如SQLite/MySQL)和异常处理机制。


http://www.kler.cn/a/592115.html

相关文章:

  • 爬虫逆向:详细讲述iOS底层原理及机制
  • 智慧环保系统(源码+文档+讲解+演示)
  • 【Camera2 教程六】Camera2算法集成
  • Channel-wise Knowledge Distillation for Dense Prediction论文阅读和
  • 【GPT入门】第20课 langchain的function calling 初步体验
  • 4.3--入门知识扫盲,IPv4的头部报文解析,数据报分片,地址分类(包你看一遍全部记住)
  • 它,让机器人与HMI屏无缝对接
  • Prometheus 和 Grafana科普介绍
  • Unity特效动态合批问题
  • 8、vue2迁移Vue3
  • 详解c++的编译过程,如何从源文件到可执行文件到
  • Android生成多个弹窗
  • Github 2025-03-15 Rust开源项目日报 Top10
  • vlan初学的总结
  • 3.5 二分查找专题:LeetCode 852. 山脉数组的峰值
  • Ubuntu 服务器安装 Python 环境 的详细指南
  • 用Python玩转数据可视化:从创意到可解释性的完美结合
  • 电商项目Ts版本
  • 【从零开始学习计算机科学】软件测试(二)单元测试 与 集成测试
  • el-table树形表格合并相同的值