1. 项目概述
这个基于Django的花卉商城系统是我在指导计算机专业学生完成毕业设计时开发的一个典型案例。作为一个完整的电商系统,它涵盖了用户管理、商品展示、购物车、订单处理等核心电商功能模块。不同于简单的Demo项目,这个系统从数据库设计到前端交互都经过了精心打磨,特别适合作为毕业设计参考项目。
系统采用经典的MTV(Model-Template-View)架构,后端使用Django框架,前端采用Bootstrap响应式布局,数据库选用MySQL。整个项目约1.2万行代码,包含了完整的文档说明和代码注释,特别适合Django初学者学习电商系统开发的全流程。
2. 系统架构设计
2.1 技术选型分析
选择Django作为后端框架主要基于以下几个考虑:
- Django自带强大的ORM系统,可以快速构建数据模型
- 内置Admin后台,方便进行商品管理和订单处理
- 完善的认证系统,用户管理模块开发效率高
- 丰富的第三方库支持,如支付接口、验证码等
前端选择Bootstrap主要因为:
- 响应式设计适配各种终端设备
- 丰富的UI组件减少前端开发工作量
- 文档完善,学习成本低
数据库选择MySQL而非SQLite的原因:
- 更适合生产环境部署
- 支持更复杂的查询和事务处理
- 性能更好,数据安全性更高
2.2 系统模块划分
系统主要分为以下核心模块:
- 用户模块:注册、登录、个人信息管理
- 商品模块:分类管理、商品展示、搜索筛选
- 购物车模块:商品添加、数量修改、删除
- 订单模块:订单生成、支付处理、订单查询
- 后台管理:商品管理、订单处理、用户管理
每个模块都采用Django的app形式组织,保持代码结构清晰:
code复制flower_shop/
├── accounts/ # 用户模块
├── products/ # 商品模块
├── cart/ # 购物车模块
├── orders/ # 订单模块
└── flower_shop/ # 项目配置
3. 核心功能实现
3.1 用户认证系统
系统采用Django内置的认证系统,并进行了以下扩展:
- 添加手机号字段和头像上传功能
- 实现邮箱验证和密码重置
- 集成第三方登录(微信、支付宝)
关键代码示例:
python复制# models.py
from django.contrib.auth.models import AbstractUser
class User(AbstractUser):
phone = models.CharField(max_length=20)
avatar = models.ImageField(upload_to='avatars/')
def get_absolute_url(self):
return reverse('accounts:profile', kwargs={'pk': self.pk})
3.2 商品展示与搜索
商品模块实现了:
- 多级分类展示
- 商品详情页
- 按价格、销量等排序
- 关键词搜索和高级筛选
搜索功能采用Django的Q对象实现:
python复制# views.py
from django.db.models import Q
def product_search(request):
query = request.GET.get('q')
if query:
products = Product.objects.filter(
Q(name__icontains=query) |
Q(description__icontains=query)
)
else:
products = Product.objects.all()
return render(request, 'products/search.html', {'products': products})
3.3 购物车实现
购物车采用session和数据库混合存储方案:
- 未登录用户使用session存储
- 登录后自动合并session购物车到数据库
- 支持商品数量修改和批量删除
购物车模型设计:
python复制class CartItem(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
product = models.ForeignKey(Product, on_delete=models.CASCADE)
quantity = models.PositiveIntegerField(default=1)
created_at = models.DateTimeField(auto_now_add=True)
@property
def total_price(self):
return self.product.price * self.quantity
4. 订单系统设计
4.1 订单流程
完整的订单流程包括:
- 购物车结算
- 收货地址选择
- 支付方式选择
- 订单确认
- 支付处理
- 订单状态更新
订单状态机设计:
python复制ORDER_STATUS = (
('pending', '待支付'),
('paid', '已支付'),
('shipped', '已发货'),
('completed', '已完成'),
('cancelled', '已取消')
)
class Order(models.Model):
user = models.ForeignKey(User, on_delete=models.PROTECT)
order_number = models.CharField(max_length=20, unique=True)
status = models.CharField(max_length=20, choices=ORDER_STATUS, default='pending')
# 其他字段...
4.2 支付集成
系统集成了两种支付方式:
- 支付宝沙箱环境
- 微信支付测试环境
支付回调处理逻辑:
python复制def alipay_callback(request):
# 验证签名
if not verify_signature(request.POST):
return HttpResponseBadRequest()
# 更新订单状态
order = Order.objects.get(order_number=request.POST.get('out_trade_no'))
if request.POST.get('trade_status') == 'TRADE_SUCCESS':
order.status = 'paid'
order.save()
return HttpResponse('success')
5. 后台管理系统
5.1 Django Admin定制
对默认Admin进行了以下增强:
- 添加商品批量操作
- 自定义订单管理界面
- 数据导出功能
- 操作日志记录
Admin定制示例:
python复制@admin.register(Product)
class ProductAdmin(admin.ModelAdmin):
list_display = ('name', 'category', 'price', 'stock')
list_filter = ('category',)
search_fields = ('name', 'description')
actions = ['export_to_csv']
def export_to_csv(self, request, queryset):
# 导出逻辑...
5.2 数据统计报表
后台集成了数据可视化功能:
- 销售趋势图表
- 商品销量排行
- 用户购买分析
使用Chart.js实现:
javascript复制// 销售数据图表
const ctx = document.getElementById('salesChart').getContext('2d');
const chart = new Chart(ctx, {
type: 'line',
data: {
labels: ['Jan', 'Feb', 'Mar', 'Apr'],
datasets: [{
label: '销售额',
data: [1200, 1900, 1500, 2000],
backgroundColor: 'rgba(75, 192, 192, 0.2)',
borderColor: 'rgba(75, 192, 192, 1)'
}]
}
});
6. 项目部署方案
6.1 生产环境配置
推荐部署方案:
- 服务器:阿里云ECS 2核4G
- Web服务器:Nginx + Gunicorn
- 数据库:MySQL 5.7
- 缓存:Redis
- 文件存储:OSS对象存储
Nginx配置示例:
nginx复制server {
listen 80;
server_name flower-shop.com;
location /static/ {
alias /path/to/static/files;
}
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
}
}
6.2 性能优化措施
实施的优化方案:
- 数据库查询优化(select_related/prefetch_related)
- 缓存高频访问数据
- 静态文件CDN加速
- 异步任务处理(Celery)
缓存配置示例:
python复制# settings.py
CACHES = {
'default': {
'BACKEND': 'django_redis.cache.RedisCache',
'LOCATION': 'redis://127.0.0.1:6379/1',
'OPTIONS': {
'CLIENT_CLASS': 'django_redis.client.DefaultClient',
}
}
}
7. 项目文档说明
7.1 开发文档
项目包含完整的开发文档:
- 需求分析文档
- 数据库设计文档
- API接口文档
- 部署手册
文档采用Markdown格式编写,便于维护和更新。
7.2 代码规范
项目遵循的编码规范:
- PEP8 Python编码规范
- Django最佳实践
- 前端代码ESLint检查
- Git提交规范
代码结构说明:
code复制docs/ # 项目文档
src/ # 源代码
requirements.txt # 依赖包
manage.py # Django管理脚本
flower_shop/ # 项目配置
apps/ # 各功能模块
tests/ # 单元测试
8. 毕业设计指导建议
8.1 论文写作要点
针对这个系统写论文时建议包含:
- 系统需求分析
- 技术选型依据
- 系统设计思路
- 核心功能实现
- 系统测试方案
- 总结与展望
8.2 答辩准备建议
答辩时需要重点准备:
- 系统演示(准备测试账号和数据)
- 技术难点解决方案
- 创新点说明
- 可能的问题与回答
我在指导学生时发现,提前录制系统演示视频是个不错的备选方案,可以避免现场演示时出现意外情况。