1. 项目概述
作为一名有多年Django开发经验的工程师,我想分享一个最近完成的办公用品采购系统项目。这个系统采用Django框架开发,使用MySQL作为数据库,实现了企业办公用品采购的数字化管理。系统主要面向三类用户:员工、供应商和管理员,每种角色都有专属的功能模块。
在实际开发过程中,我发现很多企业还在使用Excel或纸质流程管理办公用品采购,效率低下且容易出错。这个系统通过自动化流程和权限管理,将采购申请、审批、下单、发货、入库等环节全部线上化,大大提升了工作效率。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 系统架构设计
2.1 技术选型
我们选择了Django作为后端框架,主要基于以下考虑:
- Django自带强大的ORM,简化数据库操作
- 内置Admin后台,快速搭建管理系统
- 完善的认证和权限系统
- 丰富的第三方插件生态
数据库选用MySQL 8.0,因其:
- 成熟稳定,社区支持好
- 支持事务和复杂查询
- 与Django集成度高
前端采用Bootstrap+jQuery组合,保证兼容性的同时加快开发速度。
2.2 系统架构
系统采用标准的MVC架构:
code复制表现层(Templates)
↓
业务逻辑层(Views)
↓
数据访问层(Models)
↓
数据库(MySQL)
这种分层设计使得各模块职责清晰,便于维护和扩展。特别是当需要添加新功能时,可以快速定位到需要修改的代码位置。
3. 核心功能实现
3.1 用户权限系统
Django自带的auth模块已经提供了基础的认证功能,但我们还需要实现更细粒度的权限控制。我在项目中扩展了用户模型:
python复制class User(AbstractUser):
ROLES = (
('admin', '管理员'),
('supplier', '供应商'),
('employee', '员工')
)
role = models.CharField(max_length=10, choices=ROLES)
department = models.CharField(max_length=50, blank=True)
phone = models.CharField(max_length=20, blank=True)
@property
def is_admin(self):
return self.role == 'admin'
# 其他角色判断方法...
然后通过自定义装饰器实现权限控制:
python复制def role_required(roles):
def decorator(view_func):
@wraps(view_func)
def _wrapped_view(request, *args, **kwargs):
if request.user.role not in roles:
return HttpResponseForbidden("无权访问")
return view_func(request, *args, **kwargs)
return _wrapped_view
return decorator
3.2 采购流程实现
采购是系统的核心功能,主要流程如下:
- 员工提交采购申请
- 管理员审批申请
- 生成采购订单
- 供应商确认并发货
- 员工确认入库
这个流程通过状态机模式实现:
python复制class PurchaseRequest(models.Model):
STATUS_CHOICES = (
('draft', '
