Python 语言结合 Flask 框架来实现一个基础的代购商品管理、用户下单等功能的简易系统

本文涉及的产品
大数据开发治理平台DataWorks,资源组抵扣包 750CU*H
简介: 这是一个使用 Python 和 Flask 框架实现的简易代购系统示例,涵盖商品管理、用户注册登录、订单创建及查看等功能。通过 SQLAlchemy 进行数据库操作,支持添加商品、展示详情、库存管理等。用户可注册登录并下单,系统会检查库存并记录订单。此代码仅为参考,实际应用需进一步完善,如增强安全性、集成支付接口、优化界面等。

简单的代购系统的代码示例,使用 Python 语言结合 Flask 框架来实现一个基础的代购商品管理、用户下单等功能的简易系统,仅供参考,实际应用中你可能需要根据具体需求进一步完善和扩展它。
一、安装依赖
首先确保已经安装了Flask、SQLAlchemy(用于数据库操作)等相关库。

pip install flask sqlalchemy

二、数据库模型定义(使用 SQLite 数据库示例,你可以替换为其他数据库)


from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] ='sqlite:///proxy_shopping.db'  # 数据库连接字符串
db = SQLAlchemy(app)

# 商品模型,代表代购的商品信息
class Product(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(100), nullable=False)
    description = db.Column(db.Text)
    price = db.Column(db.Float, nullable=False)
    stock = db.Column(db.Integer, default=0)

# 用户模型,代表使用代购系统的用户
class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(50), unique=True, nullable=False)
    password = db.Column(db.String(100), nullable=False)
    email = db.Column(db.String(100))

# 订单模型,代表用户下单的记录
class Order(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
    product_id = db.Column(db.Integer, db.ForeignKey('product.id'), nullable=False)
    quantity = db.Column(db.Integer, nullable=False)
    order_date = db.Column(db.DateTime, default=datetime.utcnow)

    user = db.db.relationship('User', backref=db.backref('orders', lazy=True))
    product = db.relationship('Product', backref=db.backref('orders', lazy=True))

三、路由和视图函数实现(部分核心功能)


from flask import render_template, request, redirect, url_for, flash
from datetime import datetime

@app.route('/')
def index():
    products = Product.query.all()
    return render_template('index.html', products=products)

@app.route('/product/add', method=['GET', 'POST'])
def add_product():
    if request.method == 'POST':
        name = request.form['name']
        description = request.form['description']
        price = float(request.form['price'])
        stock = int(request.form['stock'])

        new_product = Product(name=name, description=description, price=price, stock=stock)
        db.session.add(new_product)
        db.session.commit()
        flash('商品添加成功!')
        return redirect(url_for('index'))
    return render_template('add_product.html')

@app.route('/product/<int:product_id>')
def product_detail(product_id):
    product = Product.query.get(product_id)
    return render_template('product_detail.html', product=product)

@app.route('/user/register', method=['GET', 'POST'])
def register_user():
    if request.method == 'POST':
        username = request.form['username']
        password = request.form['password']
        email = request.form['email']

        existing_user = User.query.filter_by(username=username).first()
        if existing_user:
            flash('用户名已存在,请重新选择用户名!')
            return redirect(url_for('register_user'))

        new_user = User(username=username, password=password, email=email)
        db.session.add(new_user)
        db.session.commit()
        flash('注册成功,请登录!')
        return redirect(url_for('login'))
    return render_template('register.html')

@app.route('/user/login', method=['GET', 'POST'])
def login():
    if request.method == 'POST':
        username = request.form['username']
        password = request.form['password']

        user = User.query.filter_by(username=username, password=password).first()
        if user:
            session['user_id'] = user.id
            return redirect(url_for('index'))
        else:
            flash('用户名或密码错误,请重新登录!')
    return render_template('login.html')

@app.route('/order/create', method=['GET', 'POST'])
def create_order():
    if 'user_id' not in session:
        return redirect(url_for('login'))

    user_id = session['user_id']
    if request.method == 'POST':
        product_id = int(request.form['product_id'])
        quantity = int(request.form['quantity'])

        product = Product.query.get(product_id)
        if product.stock < quantity:
            flash('库存不足,请重新选择数量!')
            return redirect(url_for('product_detail', product_id=product_id))

        new_order = Order(user_id=user_id, product_id=product_id, quantity=quantity)
        product.stock -= quantity
        db.session.add(new_order)
        db.session.commit()
        flash('订单创建成功!')
        return redirect(url_for('user_orders'))
    products = Product.query.all()
    return render_template('create_order.html', products=products)

@app.route('/user/orders')
def user_orders():
    if 'user_id' not in session:
        return redirect(url_for('login'))

    user_id = session['user_id']
    orders = Order.query.filter_by(user_id=user_id).all()
    return render_template('user_orders.html', orders=orders)

四、启动应用


if __name__ == '__main__': app.run(debug=True)

五、前端模板示例(以index.html为例,使用 Jinja2 模板语法,其他模板类似)

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>代购系统</title>
</head>

<body>
    <h1>商品列表</h1>
    <ul>
        {
   % for product in products %}
        <li>
            <a href="{
   { url_for('product_detail', product_id=product.id) }}">{
   {
    product.name }}</a> - 价格: {
   {
    product.price }} 元,库存: {
   {
    product.stock }}
        </li>
        {
   % endfor %}
    </ul>
</body>

</html>


上述代码实现了以下几个主要功能:

商品管理:可以添加代购商品,展示商品详情,包括商品名称、描述、价格、库存等信息。

用户管理:支持用户注册、登录功能,验证用户名是否重复等操作。

订单管理:已登录用户能创建订单,系统会检查库存是否充足,下单成功后会扣减相应库存,并记录订单信息,用户还可以查看自己的历史订单。

不过这只是一个非常基础的代购系统示例,在实际应用中还需要考虑很多方面,比如:

安全方面:对用户密码进行更安全的加密存储(比如使用bcrypt等库),防止 SQL 注入攻击等安全漏洞,做好数据的验证和过滤。

支付功能:集成合适的支付接口,实现安全的在线支付流程,方便用户支付代购费用。

物流跟踪:与物流系统对接,方便用户查询商品的物流状态等。

界面美化和交互优化:让系统的前端页面更加美观、易用,提升用户体验。

国际化和多语言支持:如果面向不同语言的用户群体,要考虑多语言的展示和交互。

你可以根据实际需求进一步调整和完善代码,使其更符合具体的代购业务场景。

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
一站式大数据开发治理平台DataWorks初级课程
DataWorks 从 2009 年开始,十ー年里一直支持阿里巴巴集团内部数据中台的建设,2019 年双 11 稳定支撑每日千万级的任务调度。每天阿里巴巴内部有数万名数据和算法工程师正在使用DataWorks,承了阿里巴巴 99%的据业务构建。本课程主要介绍了阿里巴巴大数据技术发展历程与 DataWorks 几大模块的基本能力。 产品官网 https://www.aliyun.com/product/bigdata/ide 大数据&amp;AI体验馆 https://workbench.data.aliyun.com/experience.htm#/ 帮助文档https://help.aliyun.com/zh/dataworks 课程目标 &nbsp;通过讲师的详细讲解与实际演示,学员可以一边学习一边进行实际操作,可以深入了解DataWorks各大模块的使用方式和具体功能,让学员对DataWorks数据集成、开发、分析、运维、安全、治理等方面有深刻的了解,加深对阿里云大数据产品体系的理解与认识。 适合人群 &nbsp;企业数据仓库开发人员 &nbsp;大数据平台开发人员 &nbsp;数据分析师 &nbsp;大数据运维人员 &nbsp;对于大数据平台、数据中台产品感兴趣的开发者
相关文章
|
4月前
|
数据采集 JSON API
深入解析:使用 Python 爬虫获取淘宝店铺所有商品接口
本文介绍如何使用Python结合淘宝开放平台API获取指定店铺所有商品数据。首先需注册淘宝开放平台账号、创建应用并获取API密钥,申请接口权限。接着,通过构建请求、生成签名、调用接口(如`taobao.items.search`和`taobao.item.get`)及处理响应,实现数据抓取。代码示例展示了分页处理和错误处理方法,并强调了调用频率限制、数据安全等注意事项。此技能对开发者和数据分析师极具价值。
|
2月前
|
SQL 安全 算法
解读 Python 3.14:模板字符串、惰性类型、Zstd压缩等7大核心功能升级
Python 3.14 引入了七大核心技术特性,大幅提升开发效率与应用安全性。其中包括:t-strings(PEP 750)提供更安全灵活的字符串处理;类型注解惰性求值(PEP 649)优化启动性能;外部调试器API标准化(PEP 768)增强调试体验;原生支持Zstandard压缩算法(PEP 784)提高效率;REPL交互环境升级更友好;UUID模块扩展支持新标准并优化性能;finally块语义强化(PEP 765)确保资源清理可靠性。这些改进使Python在后端开发、数据科学等领域更具竞争力。
113 5
解读 Python 3.14:模板字符串、惰性类型、Zstd压缩等7大核心功能升级
|
1月前
|
JSON API 开发者
深入浅出:拼多多商品列表API接口Python攻略
拼多多是中国领先的社交电商平台,为开发者提供了丰富的API接口,用于集成商品数据到第三方应用。通过Python可以轻松调用这些API获取商品列表。主要步骤包括:1) 安装必要库(如`requests`);2) 使用AppKey和AppSecret获取访问令牌;3) 调用商品列表API,传入参数如商品ID、页码等;4) 解析返回的JSON数据提取所需信息。按照此流程,开发者能够快速实现与拼多多平台的数据交互。
|
2月前
|
供应链 API 开发者
1688 商品数据接口终极指南:Python 开发者如何高效获取标题 / 价格 / 销量数据(附调试工具推荐)
1688商品列表API是阿里巴巴开放平台提供的服务,允许开发者通过API获取1688平台的商品信息(标题、价格、销量等)。适用于电商选品、比价工具、供应链管理等场景。使用时需构造请求URL,携带参数(如q、start_price、end_price等),发送HTTP请求并解析返回的JSON/XML数据。示例代码展示了如何用Python调用该API获取商品列表。
135 18
|
2月前
|
JSON API 数据格式
手把手教你抓取京东商品评论:API 接口解析与 Python 实战
京东商品评论蕴含用户对产品质量、体验和服务的真实反馈,分析这些数据有助于企业优化产品和满足用户需求。由于京东未提供官方API,需通过逆向工程获取评论数据。其主要接口为“商品评论列表接口”,支持按商品ID、评分、排序方式等参数获取评论,返回JSON格式数据,包含评论列表、摘要(如好评率)及热门标签等信息。
|
3月前
|
数据采集 搜索推荐 API
Python 原生爬虫教程:京东商品列表页面数据API
京东商品列表API是电商大数据分析的重要工具,支持开发者、商家和研究人员获取京东平台商品数据。通过关键词搜索、分类筛选、价格区间等条件,可返回多维度商品信息(如名称、价格、销量等),适用于市场调研与推荐系统开发。本文介绍其功能并提供Python请求示例。接口采用HTTP GET/POST方式,支持分页、排序等功能,满足多样化数据需求。
|
4月前
|
机器学习/深度学习 设计模式 测试技术
Python 高级编程与实战:构建自动化测试框架
本文深入探讨了Python中的自动化测试框架,包括unittest、pytest和nose2,并通过实战项目帮助读者掌握这些技术。文中详细介绍了各框架的基本用法和示例代码,助力开发者快速验证代码正确性,减少手动测试工作量。学习资源推荐包括Python官方文档及Real Python等网站。
|
4月前
|
存储 JSON API
Python测试淘宝店铺所有商品接口的详细指南
本文详细介绍如何使用Python测试淘宝店铺商品接口,涵盖环境搭建、API接入、签名生成、请求发送、数据解析与存储、异常处理等步骤。通过具体代码示例,帮助开发者轻松获取和分析淘宝店铺商品数据,适用于电商运营、市场分析等场景。遵守法规、注意调用频率限制及数据安全,确保应用的稳定性和合法性。
|
4月前
|
存储 监控 API
1688平台API接口实战:Python实现店铺全量商品数据抓取
本文介绍如何使用Python通过1688开放平台的API接口自动化抓取店铺所有商品数据。首先,开发者需在1688开放平台完成注册并获取App Key和App Secret,申请“商品信息查询”权限。接着,利用`alibaba.trade.product.search4trade`接口,构建请求参数、生成MD5签名,并通过分页机制获取全量商品数据。文中详细解析了响应结构、存储优化及常见问题处理方法,还提供了竞品监控、库存预警等应用场景示例和完整代码。
|
5月前
|
人工智能 搜索推荐 测试技术
通义灵码 2.0 智能编码功能评测:Deepseek 加持下的 Python 开发体验
通义灵码 2.0 智能编码功能评测:Deepseek 加持下的 Python 开发体验
193 11

热门文章

最新文章

推荐镜像

更多