基于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)和异常处理机制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大霸王龙

+V来点难题

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值