温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片!
1. 项目背景与目标
随着互联网消费习惯的普及,生鲜水果线上销售逐渐成为零售行业的重要增长点。传统线下水果店受限于营业时间、门店辐射范围和库存管理方式,难以满足用户对新鲜度、配送速度和品类丰富度的需求。本项目基于 Python 和 Django 框架,设计并实现一套生鲜水果商城销售系统,覆盖商品展示、在线下单、购物车管理、订单处理、后台管理等核心业务环节,为中小型生鲜商户提供一套可落地、易扩展的电商解决方案。
系统开发目标包括:
- 搭建稳定可靠的商品信息管理模块,支持水果分类、上下架和库存维护。
- 实现用户注册、登录、个人信息管理以及收货地址维护。
- 提供购物车、订单提交、订单查询和支付状态跟踪等完整交易流程。
- 建设后台管理界面,方便运营人员处理商品、订单和用户数据。
2. 技术选型
本系统采用 Python 作为主要开发语言,选用 Django 作为 Web 开发框架,利用其自带的后台管理、ORM 映射和模板引擎能力,快速构建业务功能。前端页面使用 HTML、CSS 和 JavaScript 进行交互展示,数据库选用 SQLite 作为开发环境默认存储,生产环境可平滑切换至 MySQL。
| 技术组件 | 选型说明 |
|---|---|
| 开发语言 | Python 3.10+ |
| Web 框架 | Django 4.x |
| 数据库 | SQLite(开发)/ MySQL(生产) |
| 前端技术 | HTML、CSS、JavaScript、Bootstrap |
| 图片存储 | 本地静态目录 / 对象存储 |
3. 系统功能模块设计
系统整体划分为前台用户端和后台管理端两大模块。前台面向普通消费者,提供商品浏览、搜索、购物车和订单管理功能;后台面向商户运营人员,提供商品维护、订单处理和用户管理功能。
3.1 用户模块
用户模块负责账号注册、登录、个人信息维护和收货地址管理。Django 自带的认证系统可以在此基础上扩展用户资料字段,例如手机号、昵称和头像。
3.2 商品模块
商品模块包括水果分类、商品详情、价格、库存、销量和上下架状态。商品图片支持上传和预览,分类支持多级结构,便于前台按品类筛选。
3.3 购物车模块
购物车模块支持用户将商品加入购物车、修改购买数量、删除商品以及计算总价。购物车数据可以保存在服务端数据库中,也可以结合 Cookie 实现游客购物车。
3.4 订单模块
订单模块负责从购物车生成订单、填写收货地址、选择支付方式并提交。订单状态包括待支付、已支付、配送中、已完成和已取消,后台可对订单进行发货和状态更新。
3.5 后台管理模块
后台管理模块基于 Django Admin 进行二次开发,也可以自定义管理页面。主要功能包括商品分类管理、商品信息维护、订单查询与处理、用户列表和销售数据统计。
4. 数据库设计
根据业务需求,系统核心数据表包括用户表、商品分类表、商品表、购物车表、订单表和订单明细表。下面给出主要表结构说明。
| 数据表 | 主要字段 | 说明 |
|---|---|---|
| User | username、password、phone、avatar | 用户账号信息 |
| Category | name、parent、sort | 水果分类 |
| Product | name、category、price、stock、image、status | 商品信息 |
| Cart | user、product、quantity | 购物车记录 |
| Order | user、total_amount、status、address、created_at | 订单主表 |
| OrderItem | order、product、price、quantity | 订单明细 |
5. 核心代码实现
下面给出系统关键模块的代码示例,帮助读者快速理解 Django 项目的实现方式。
5.1 商品模型定义
from django.db import models class Category(models.Model): name = models.CharField(max_length=50, verbose_name="分类名称") parent = models.ForeignKey("self", null=True, blank=True, on_delete=models.CASCADE, verbose_name="父分类") sort = models.IntegerField(default=0, verbose_name="排序") class Meta: verbose_name = "商品分类" verbose_name_plural = verbose_name def __str__(self): return self.name class Product(models.Model): name = models.CharField(max_length=100, verbose_name="商品名称") category = models.ForeignKey(Category, on_delete=models.CASCADE, verbose_name="所属分类") price = models.DecimalField(max_digits=8, decimal_places=2, verbose_name="价格") stock = models.IntegerField(default=0, verbose_name="库存") image = models.ImageField(upload_to="products/", blank=True, null=True, verbose_name="商品图片") status = models.BooleanField(default=True, verbose_name="是否上架") sales = models.IntegerField(default=0, verbose_name="销量") created_at = models.DateTimeField(auto_now_add=True, verbose_name="创建时间") class Meta: verbose_name = "商品" verbose_name_plural = verbose_name def __str__(self): return self.name5.2 购物车视图实现
from django.shortcuts import get_object_or_404, redirect from django.contrib.auth.decorators import login_required from .models import Cart, Product @login_required def add_to_cart(request, product_id): product = get_object_or_404(Product, id=product_id, status=True) cart_item, created = Cart.objects.get_or_create( user=request.user, product=product, defaults={"quantity": 1} ) if not created: cart_item.quantity += 1 cart_item.save() return redirect("cart_detail")5.3 订单创建逻辑
from django.utils import timezone from .models import Order, OrderItem, Cart def create_order(user, address, cart_items): total = sum(item.product.price * item.quantity for item in cart_items) order = Order.objects.create( user=user, total_amount=total, address=address, status="pending" ) for item in cart_items: OrderItem.objects.create( order=order, product=item.product, price=item.product.price, quantity=item.quantity ) item.delete() return order6. 页面展示与交互
前台页面主要包括首页、商品列表页、商品详情页、购物车页面、订单确认页和用户中心。首页展示推荐水果和分类入口,商品列表支持按分类筛选和关键词搜索,商品详情页展示图片、价格、库存和加入购物车按钮。
购物车页面支持数量增减和删除操作,订单确认页展示商品清单、收货地址和应付金额。用户中心提供订单列表、订单详情和收货地址管理入口。
7. 系统测试与部署
系统开发完成后,需要对用户注册登录、商品浏览、购物车操作、订单提交和后台管理等核心流程进行功能测试。测试通过后,可以使用 Gunicorn 和 Nginx 将 Django 项目部署到 Linux 服务器,数据库切换为 MySQL,静态文件交由 Nginx 处理。
部署步骤主要包括:
- 安装 Python 依赖并迁移数据库。
- 收集静态文件并配置 Nginx 反向代理。
- 使用 Gunicorn 启动 Django 应用。
- 配置 HTTPS 证书和定时备份任务。
8. 总结与展望
本项目基于 Python 和 Django 实现了一套完整的生鲜水果商城销售系统,覆盖了商品管理、购物车、订单流转和后台运营等核心业务。系统结构清晰、扩展性好,适合作为中小型生鲜电商业务的起步方案。
后续可以从以下方向继续完善:引入 Redis 缓存热点商品数据,接入第三方支付和物流接口,增加促销活动和会员积分体系,以及基于用户行为数据构建个性化推荐功能。