# 基于django的库存管理系统 **Repository Path**: kjiskyz/inventory ## Basic Information - **Project Name**: 基于django的库存管理系统 - **Description**: 使用django开发简易库存管理系统 - **Primary Language**: Python - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 26 - **Forks**: 10 - **Created**: 2023-06-02 - **Last Updated**: 2026-06-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Django 库存管理系统 基于 Django 3.2 框架开发的库存管理系统,支持物料管理、出入库操作、库存盘点、月底结存及数据备份恢复等功能。采用 django-simpleui 美化 Admin 后台界面,使用 MySQL 8.0 作为数据存储。 kj 123 --- ## 目录 - [功能特性](#功能特性) - [环境要求](#环境要求) - [安装与配置](#安装与配置) - [访问地址](#访问地址) - [项目结构](#项目结构) - [数据模型](#数据模型) - [技术栈](#技术栈) - [默认管理员账号](#默认管理员账号) - [界面展示](#界面展示) - [许可证](#许可证) --- ## 功能特性 | 模块 | 功能说明 | |------|----------| | **用户注册与登录** | 支持用户注册,权限分为超级管理员和普通用户两个分组 | | **控制面板(Dashboard)** | 展示物料统计信息、库存预警(低于最小库存或超过最大库存的物料高亮提示) | | **物料管理** | 物料的增删改查(CRUD),支持图片上传,可设置最大/最小库存阈值 | | **入库管理** | 入库时自动更新当前库存,超过最大库存时拒绝入库操作 | | **出库管理** | 出库时自动扣减当前库存,低于最小库存时拒绝出库操作 | | **物料盘点** | 通过 Ajax 弹窗输入实际盘点数量,记录盘点差异 | | **月底结存** | 按月份查询物料结存数据,支持导出 Excel 报表 | | **数据库备份与恢复** | 支持将数据库导出为 JSON 格式备份文件,并可从备份文件恢复 | --- ## 环境要求 | 依赖 | 版本要求 | |------|----------| | Python | 3.9+ | | MySQL | 8.0 | | Conda 或 pip | 任选其一用于包管理 | --- ## 安装与配置 ### 1. 克隆仓库 ```bash git clone cd inventory ``` ### 2. 创建 Conda 环境(推荐) ```bash conda create -n inventory python=3.9 conda activate inventory ``` ### 3. 安装 Python 依赖 ```bash pip install -r requirements.txt ``` > **注意**:如果 `mysqlclient` 安装失败,可先安装系统级 MySQL 开发库,或使用 PyMySQL 作为替代(项目已在 `inventory/__init__.py` 中配置了 PyMySQL 适配)。 ### 4. 配置 MySQL 数据库 确保 MySQL 服务运行在 `localhost:3306`,然后创建数据库: ```sql mysql -u root -p ``` ```sql CREATE DATABASE inventory CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci; ``` ### 5. 修改数据库配置 编辑 [`inventory/settings.py`](inventory/settings.py),将数据库密码修改为你自己的 MySQL 密码: ```python DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'inventory', 'USER': 'root', 'HOST': 'localhost', 'PASSWORD': '你的MySQL密码', # ← 修改此处 'PORT': '3306', } } ``` ### 6. 导入数据库(可选,含示例数据) 项目提供了现成的 SQL 备份文件,可直接导入: ```bash mysql -u root -p inventory < inventory.sql ``` ### 7. 或者使用 Django 迁移(空数据库) 如果不导入示例数据,使用 Django 迁移创建表结构: ```bash python manage.py migrate python manage.py createsuperuser ``` ### 8. 启动开发服务器 ```bash python manage.py runserver ``` 服务启动后访问 http://127.0.0.1:8000/ 即可。 --- ## 访问地址 | 地址 | 用途 | |------|------| | http://127.0.0.1:8000/ | 首页(注册/登录) | | http://127.0.0.1:8000/admin/ | Admin 后台管理 | | http://127.0.0.1:8000/register/ | 用户注册 | | http://127.0.0.1:8000/tasks/dashboard/ | 控制面板 | | http://127.0.0.1:8000/month/ | 月底结存报表 | | http://127.0.0.1:8000/safeguards/ | 安全管理(数据库备份与恢复) | --- ## 项目结构 ``` inventory/ ├── inventory/ # Django 项目配置 │ ├── settings.py # 项目设置(数据库、SimpleUI 等) │ ├── urls.py # 根路由配置 │ ├── wsgi.py # WSGI 入口 │ └── __init__.py # PyMySQL 适配(pymysql.install_as_MySQLdb) ├── init/ # 核心业务应用 │ ├── models.py # 数据模型(Material、In_storage、Out_storage、Check_sheet、Backup_form) │ ├── admin.py # Admin 注册与自定义 Action │ ├── views.py # 视图函数(Dashboard、盘点、月底结存、备份等) │ ├── urls.py # 应用路由配置 │ ├── forms.py # 表单定义 │ ├── apps.py # 应用配置 │ └── migrations/ # 数据库迁移文件 ├── templates/ # HTML 模板文件 ├── static/ # 静态文件(CSS、JS、图标) ├── media/ # 用户上传的媒体文件(物料图片等) ├── backup/ # 数据库备份文件(JSON 格式) ├── manage.py # Django 管理脚本 ├── requirements.txt # Python 依赖清单 ├── inventory.sql # MySQL 数据库备份(含示例数据) └── LICENSE # 许可证文件 ``` --- ## 数据模型 项目包含 5 个核心数据模型,定义在 [`init/models.py`](init/models.py): | 模型 | 说明 | |------|------| | **Material** | 物料信息,包含物料序号(主键)、名称、最大/最小库存、当前库存、价格、图片、供货单位等 | | **In_storage** | 入库记录,关联物料,入库时自动增加物料当前库存(超出最大库存则拒绝) | | **Out_storage** | 出库记录,关联物料,出库时自动扣减物料当前库存(低于最小库存则拒绝) | | **Check_sheet** | 盘点记录,记录物料的初始库存与实际盘点数量 | | **Backup_form** | 备份记录,记录备份管理员、备份时间和备份文件路径 | --- ## 技术栈 | 技术 | 版本 | 用途 | |------|------|------| | [Django](https://www.djangoproject.com/) | 3.2 | Web 框架 | | [django-simpleui](https://github.com/newpanjing/simpleui) | 2023.3.1 | Admin 后台 UI 美化 | | [MySQL](https://www.mysql.com/) | 8.0 | 数据库 | | [PyMySQL](https://pypi.org/project/PyMySQL/) | 1.0.3 | MySQL 适配器 | | [mysqlclient](https://pypi.org/project/mysqlclient/) | 2.1.1 | MySQL C 语言驱动 | | [Pillow](https://pillow.readthedocs.io/) | 9.5.0 | 图片处理(物料图片上传) | | [xlwt](https://pypi.org/project/xlwt/) | 1.3.0 | Excel 导出(月底结存报表) | | [openpyxl](https://openpyxl.readthedocs.io/) | 3.1.2 | Excel 文件处理 | | [django-import-export](https://django-import-export.readthedocs.io/) | 2.0 | Admin 数据导入导出 | | [django-imagekit](https://django-imagekit.readthedocs.io/) | 4.1.0 | 图片自动处理 | | [djangorestframework](https://www.django-rest-framework.org/) | 3.10.2 | REST API 支持 | --- ## 默认管理员账号 ### 方式一:从 `inventory.sql` 导入 导入 [`inventory.sql`](inventory.sql) 后,数据库中已包含管理员账号。请查看导入时的原始数据确认用户名和密码。 ### 方式二:手动创建超级用户 如果使用 Django 迁移创建空数据库,则需要手动创建管理员: ```bash python manage.py createsuperuser ``` 按提示输入用户名、邮箱和密码即可。 --- ## 界面展示 ### 物料初始化界面 ![物料初始化界面](https://foruda.gitee.com/images/1685868162844280980/cfe66d92_12707783.png "屏幕截图") ![物料列表界面](https://foruda.gitee.com/images/1685868175653217907/5ab71715_12707783.png "屏幕截图") ### 出库功能界面 ![出库功能1](https://foruda.gitee.com/images/1685868183422960180/e382b573_12707783.png "屏幕截图") ![出库功能2](https://foruda.gitee.com/images/1685868190013367576/3bd31fcd_12707783.png "屏幕截图") ### 入库功能界面 ![入库功能1](https://foruda.gitee.com/images/1685868198735624415/0f343085_12707783.png "屏幕截图") ![入库功能2](https://foruda.gitee.com/images/1685868211382064135/6c839eb9_12707783.png "屏幕截图") ### 物料盘点功能界面 ![盘点功能1](https://foruda.gitee.com/images/1685868216856220946/d938c0e1_12707783.png "屏幕截图") ![盘点功能2](https://foruda.gitee.com/images/1685868224654026461/5c041df5_12707783.png "屏幕截图") ### 月底结存功能界面 ![月底结存](https://foruda.gitee.com/images/1685868234185306799/5278b42e_12707783.png "屏幕截图") ### 安全管理功能界面 ![安全管理1](https://foruda.gitee.com/images/1685868244479046189/7fc96e84_12707783.png "屏幕截图") ![安全管理2](https://foruda.gitee.com/images/1685868255776053475/92960e6a_12707783.png "屏幕截图") --- ## 许可证 本项目基于 [LICENSE](LICENSE) 文件中的许可条款发布。