温馨提示:文末有 优快云 平台官方提供的学长 QQ 名片 :)
1. 项目简介
随着互联网的发展,线上二手商品交易平台越来越受到人们的欢迎。传统的二手商品交易平台通常依赖于复杂的前端和后端架构,开发成本较高。而使用Python及其相关的Web框架和技术,可以快速搭建一个高效、可靠的二手商品销售平台。本项目旨在开发一个基于Python的二手商品销售平台,利用现代化的Web应用框架和数据库技术实现高效的二手商品管理与交易。该系统将涵盖商品发布、商品搜索、订单管理、用户评价等多个功能模块,旨在为用户提供一个全面的二手商品交易平台。通过该系统,用户可以方便地发布和购买二手商品,提高交易效率,减少中间环节。
基于Python的二手商品销售平台
2. 关键技术点
- Python:用于后端逻辑处理和API接口开发。
- Flask:轻量级Web应用框架,用于构建后端服务。
- SQLAlchemy:ORM(对象关系映射)工具,用于简化数据库操作。
- SQLite:关系型数据库管理系统,用于存储商品信息、用户信息和订单信息。
- HTML/CSS/JavaScript:用于构建前端界面,提供用户友好的交互体验。
- Bootstrap:前端框架,用于构建响应式的网页布局。
- Jinja2:用于模板渲染,生成动态网页内容。
3. 数据库设计
3.1 数据表结构与逻辑关系
(1)数据表概览
该系统共包含6个核心数据表:
- User(用户表) - 存储用户基本信息和权限
- Category(分类表) - 商品分类管理
- Product(商品表) - 商品信息核心表
- Comment(评论表) - 商品评论系统
- Order(订单表) - 交易订单管理
- Advertisement(广告表) - 首页轮播广告
(2)表间关系设计
一对多关系 (One-to-Many)
- User → Product: 一个用户可以发布多个商品
User.products←Product.seller
- User → Order: 一个用户可以有多个订单
User.orders←Order.buyer
- User → Comment: 一个用户可以发表多个评论
User.comments←Comment.author
- Category → Product: 一个分类下可以有多个商品
Category.products←Product.category
- Product → Comment: 一个商品可以有多个评论
Product.comments←Comment.product
- Product → Order: 一个商品可以有多个订单
Product.orders←Order.product
多对一关系 (Many-to-One)
Product.seller→User(商品属于一个卖家)Product.category→Category(商品属于一个分类)Comment.user→User(评论属于一个用户)Comment.product→Product(评论属于一个商品)Order.buyer→User(订单属于一个买家)Order.product→Product(订单关联一个商品)
3.2 部分数据库字段信息表格
(1)用户表 (User)
| 字段名 | 数据类型 | 约束条件 | 默认值 | 说明 |
|---|---|---|---|---|
| id | Integer | 主键, 自增 | - | 用户唯一标识 |
| username | String(64) | 唯一, 非空 | - | 用户名 |
| String(120) | 唯一, 非空 | - | 邮箱地址 | |
| password_hash | String(128) | - | - | 密码哈希值 |
| avatar | String(200) | - | ‘default_avatar.png’ | 头像文件名 |
| is_admin | Boolean | - | False | 是否管理员 |
| status | String(20) | - | ‘active’ | 用户状态 (active/banned) |
| phone | String(20) | 可空 | - | 手机号码 |
| created_at | DateTime | - | 当前时间 | 创建时间 |
(2)商品表 (Product)
| 字段名 | 数据类型 | 约束条件 | 默认值 | 说明 |
|---|---|---|---|---|
| id | Integer | 主键, 自增 | - | 商品唯一标识 |
| title | String(100) | 非空 | - | 商品标题 |
| description | Text | 非空 | - | 商品描述 |
| price | Float | 非空 | - | 商品价格 |
| image | String(200) | - | ‘default_product.png’ | 商品图片文件名 |
| status | String(20) | - | ‘pending’ | 商品状态 (pending/approved/sold/rejected) |
| created_at | DateTime | - | 当前时间 | 创建时间 |
| updated_at | DateTime | 自动更新 | 当前时间 | 更新时间 |
| seller_id | Integer | 外键 → User.id, 非空 | - | 卖家用户ID |
| category_id | Integer | 外键 → Category.id, 非空 | - | 商品分类ID |
3.3 外键关系汇总表
| 子表 | 外键字段 | 父表 | 父表字段 | 关系类型 | 说明 |
|---|---|---|---|---|---|
| Product | seller_id | User | id | 多对一 | 商品属于一个卖家 |
| Product | category_id | Category | id | 多对一 | 商品属于一个分类 |
| Comment | user_id | User | id | 多对一 | 评论属于一个用户 |
| Comment | product_id | Product | id | 多对一 | 评论属于一个商品 |
| Order | user_id | User | id | 多对一 | 订单属于一个买家 |
| Order | product_id | Product | id | 多对一 | 订单关联一个商品 |
3.4 部分数据库model代码
# 商品模型
class Product(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(100), nullable=False)
description = db.Column(db.Text, nullable=False)
price = db.Column(db.Float, nullable=False)
image = db.Column(db.String(200), default='default_product.png')
status = db.Column(db.String(20), default='pending') # pending, approved, sold, rejected
created_at = db.Column(db.DateTime, default=datetime.utcnow)
updated_at = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
# 外键关系
seller_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
category_id = db.Column(db.Integer, db.ForeignKey('category.id'), nullable=False)
# 商品的留言
comments = db.relationship('Comment', backref='product', lazy='dynamic')
# 商品的订单
orders = db.relationship('Order', backref='product', lazy='dynamic')
def __repr__(self):
return f'<Product {self.title}>'
4. 二手商品销售平台
4.1 首页
首页包含商品分类、推荐商品、平台介绍及快捷导航,支持搜索与浏览,提供安全、实惠、环保的二手交易服务。

4.2 用户注册登录
4.2.1 用户注册

4.2.2 用户登录

4.2.3 个人信息

4.3 商品列表页
商品列表页支持分类筛选、价格范围设置和排序,展示商品信息并提供详情查看,方便用户高效浏览与选购。

4.4 商品详情页
商品详情页展示商品信息、用户评价,支持评论互动与相关商品推荐,便于用户全面了解并决策购买。

4.5 我发布的商品列表
展示用户发布的商品列表,支持查看、编辑、删除操作,实时管理商品状态与信息。

4.6 发布与编辑商品
支持填写商品标题、分类、价格、描述并上传图片,完成商品发布或信息更新。

4.7 商品搜索页
搜索结果页展示匹配商品,支持快速浏览与筛选,方便用户查找目标物品。

4.8 购买商品页
展示订单详情,支持立即支付或取消订单,确保交易流程清晰便捷。

4.9 订单详情页
展示用户订单列表,包含订单号、商品信息、价格、状态及操作选项,支持查看详情。

4.10 管理员平台
4.10.1 用户管理
支持用户信息查看、搜索、筛选及编辑删除,实现高效用户管理与权限控制。

4.10.2 商品管理
支持商品信息查看、搜索、筛选及编辑删除,实现高效的商品审核与管理。

4.10.3 分类管理
支持分类的添加、编辑、删除,便于商品分类维护与管理。

4.10.4 订单管理
支持订单信息查看、搜索、筛选及状态管理,实现高效订单处理与跟踪。

4.10.5 广告管理
支持广告的添加、编辑、删除,管理首页展示内容与推广信息。

5. 代码框架

后台部分处理逻辑代码:
# 购买商品
@app.route('/buy/product/<int:product_id>', methods=['POST'])
@login_required
def buy_product(product_id):
product = Product.query.get_or_404(product_id)
# 检查商品状态
if product.status != 'available':
flash('该商品暂不可购买!', 'error')
return redirect(url_for('product_detail', product_id=product_id))
# 检查是否为自己的商品
if product.seller_id == current_user.id:
flash('不能购买自己的商品!', 'error')
return redirect(url_for('product_detail', product_id=product_id))
# 检查商品是否已被购买
existing_order = Order.query.filter_by(product_id=product_id, status='pending').first()
if existing_order:
flash('该商品已有待处理订单!', 'error')
return redirect(url_for('product_detail', product_id=product_id))
# 生成订单号
import random
import string
order_number = ''.join(random.choices(string.ascii_uppercase + string.digits, k=10))
# 创建订单
order = Order(
order_number=order_number,
user_id=current_user.id,
product_id=product_id,
status='pending'
)
db.session.add(order)
db.session.commit()
flash('订单创建成功!请前往订单页面完成支付。', 'success')
return redirect(url_for('order_detail', order_id=order.id))
6. 总结
本项目旨在开发一个基于Python的二手商品销售平台,利用现代化的Web应用框架和数据库技术实现高效的二手商品管理与交易。该系统将涵盖商品发布、商品搜索、订单管理、用户评价等多个功能模块,旨在为用户提供一个全面的二手商品交易平台。通过该系统,用户可以方便地发布和购买二手商品,提高交易效率,减少中间环节。
欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。技术交流、源码获取认准下方 优快云 官方提供的学长 QQ 名片 :)
精彩专栏推荐订阅:

4114

被折叠的 条评论
为什么被折叠?



