目录
[1. Flask简介](#1. Flask简介)
[1.1 Flask的核心特点](#1.1 Flask的核心特点)
[1.2 Flask的基本结构](#1.2 Flask的基本结构)
[1.3 Flask的常见用法](#1.3 Flask的常见用法)
[1.3.1 创建Flask应用](#1.3.1 创建Flask应用)
[1.3.2 路由和视图函数](#1.3.2 路由和视图函数)
[1.3.3 动态URL参数](#1.3.3 动态URL参数)
[1.3.4 使用模板](#1.3.4 使用模板)
[1.4 Flask的优点](#1.4 Flask的优点)
[1.5 总结](#1.5 总结)
[2. Flask 环境创建](#2. Flask 环境创建)
[2.1 创建虚拟环境](#2.1 创建虚拟环境)
[2.2 激活虚拟环境](#2.2 激活虚拟环境)
[1.3 安装Flask](#1.3 安装Flask)
[1.4 创建Flask应用](#1.4 创建Flask应用)
[1.5 运行Flask应用](#1.5 运行Flask应用)
[1.6 管理虚拟环境依赖](#1.6 管理虚拟环境依赖)
[1.7 退出虚拟环境](#1.7 退出虚拟环境)
[1.8 总结](#1.8 总结)
[3. Flask 开发糕点网站的完整基础环境开发流程](#3. Flask 开发糕点网站的完整基础环境开发流程)
[3.1 基础开发环境](#3.1 基础开发环境)
[3.2 创建文件夹,建立环境](#3.2 创建文件夹,建立环境)
[3.2.1 创建文件夹Flask,在Flask下面创建cake_shop](#3.2.1 创建文件夹Flask,在Flask下面创建cake_shop)
[3.3.2 建立虚拟环境](#3.3.2 建立虚拟环境)
[3.3 安装必要的 Python 库](#3.3 安装必要的 Python 库)
[3.4 配置数据库连接](#3.4 配置数据库连接)
[3.4.1 配置 MySQL](#3.4.1 配置 MySQL)
[3.4.2 配置 Flask 与 MySQL 的连接](#3.4.2 配置 Flask 与 MySQL 的连接)
[3.5 创建 Flask 应用结构](#3.5 创建 Flask 应用结构)
[3.5.1 创建必要文件](#3.5.1 创建必要文件)
[3.6 配置 Flask 与数据库连接检查](#3.6 配置 Flask 与数据库连接检查)
[3.6.1 配置文件 (config.py)](#3.6.1 配置文件 (config.py))
[3.6.2 在 app.py 进行数据库连接测试](#3.6.2 在 app.py 进行数据库连接测试)
[3.6.3 测试数据库连接](#3.6.3 测试数据库连接)
[3.7 初始化数据库迁移](#3.7 初始化数据库迁移)
[3.8 创建第一个页面](#3.8 创建第一个页面)
[3.8.1 创建首页视图](#3.8.1 创建首页视图)
[3.8.2 配置蓝图](#3.8.2 配置蓝图)
[3.8.3 创建模板文件](#3.8.3 创建模板文件)
[3.8.4 启动 Flask 应用](#3.8.4 启动 Flask 应用)
[3.8.5 测试首页](#3.8.5 测试首页)
[4.1 开发流程与步骤](#4.1 开发流程与步骤)
[4.2 最终目录结构](#4.2 最终目录结构)
[4.3 开发顺序建议](#4.3 开发顺序建议)
1. Flask简介
1.1 Flask的核心特点
(1)轻量级
Flask本身非常简洁,没有复杂的结构和约定,开发者可以根据项目需要自由选择工具和库。这让Flask成为快速开发的理想选择。
(2)灵活性
Flask不强制使用特定的数据库、模板引擎、表单库或其他工具。你可以根据项目需求选择不同的扩展和工具。
(3)内置开发服务器和调试器
Flask自带了一个开发服务器,可以在本地开发时快速查看应用效果。此外,它也提供了调试工具,能在应用出现错误时提供详细的错误信息。
(4)Jinja2模板引擎
Flask集成了Jinja2模板引擎,使得你可以将动态内容与HTML代码分离,方便管理和渲染网页。
(5)请求和响应
Flask提供了丰富的功能来处理HTTP请求,包括表单提交、URL参数、JSON数据等。它还提供了响应功能,可以自定义返回内容(如HTML、JSON、文件等)。
(6)扩展性
虽然Flask是一个微框架,但它有丰富的扩展库支持,可以通过安装第三方库来实现数据库连接、用户认证、表单验证等功能。
1.2 Flask的基本结构
一个最简单的Flask应用通常包含以下几个部分:
- Flask实例:用于创建Flask应用的对象。
- 路由:定义URL路径和视图函数之间的关系。
- 视图函数:处理特定路由的请求,并返回响应。
- 模板:用来渲染HTML页面的模板引擎。
1.3 Flask的常见用法
1.3.1 创建Flask应用
python
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, World!'
if __name__ == '__main__':
app.run(debug=True)
1.3.2 路由和视图函数
Flask通过@app.route()
装饰器来定义路由。例如:
python
@app.route('/about')
def about():
return "This is the About page."
1.3.3 动态URL参数
你可以在URL中使用动态参数,例如:
python
@app.route('/user/<username>')
def user_profile(username):
return f"Hello, {username}!"
1.3.4 使用模板
Flask集成了Jinja2模板引擎,可以将动态内容与HTML分离:
html
<!-- templates/hello.html -->
<!DOCTYPE html>
<html>
<head><title>Hello</title></head>
<body>
<h1>Hello, {
{ name }}!</h1>
</body>
</html>
在视图函数中渲染模板:
html
from flask import render_template
@app.route('/hello/<name>')
def hello(name):
return render_template('hello.html', name=name)
1.4 Flask的优点
- 简洁易用:Flask的代码结构简单,入门容易。
- 灵活性高:开发者可以选择任何想用的库和工具。
- 广泛的社区支持:Flask有大量的文档、教程以及开源扩展,可以方便地进行项目开发。
1.5 总结
Flask是一个非常适合入门的Web框架,提供了灵活的功能和简单的API。如果你希望开发小型应用,或者想快速搭建一个Web原型,Flask无疑是一个很好的选择。随着项目的复杂性增加,你还可以利用Flask的扩展来增加所需的功能。
2. Flask 环境创建
2.1 创建虚拟环境
首先,确保你的系统中已安装python
和pip
。然后,进入你的项目目录,打开终端并输入以下命令来创建一个虚拟环境。
对于Windows:
python -m venv venv
对于Mac/Linux:
python3 -m venv venv
这个命令会在你的项目文件夹中创建一个名为venv
的目录,用于存放虚拟环境的所有文件。
2.2 激活虚拟环境
对于Windows:
.\venv\Scripts\activate
对于Mac/Linux:
source venv/bin/activate
激活后,你应该会看到命令行前面有一个(venv)
的标记,表示虚拟环境已成功激活。
1.3 安装Flask
在虚拟环境中,使用pip
安装Flask:
pip install flask
1.4 创建Flask应用
按照之前提到的步骤,创建一个Flask应用。比如,创建一个名为app.py
的文件,并编写以下内容:
python
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, World!'
if __name__ == '__main__':
app.run(debug=True)
1.5 运行Flask应用
在虚拟环境激活的情况下,运行你的Flask应用:
python app.py
你应该可以在浏览器中访问http://127.0.0.1:5000/
看到Flask应用的欢迎信息。
1.6 管理虚拟环境依赖
当你在虚拟环境中安装了其他依赖包时,可以使用pip freeze
命令将它们导出到一个requirements.txt
文件中,这样其他开发者或者你自己在不同的机器上也能轻松安装相同的依赖:
pip freeze > requirements.txt
其他开发者可以通过以下命令来安装所有依赖:
pip install -r requirements.txt
1.7 退出虚拟环境
当你完成开发时,可以通过以下命令退出虚拟环境:
deactivate
这会返回到系统的Python环境。
1.8 总结
- 创建虚拟环境:
python -m venv venv
- 激活虚拟环境:
source venv/bin/activate
(Mac/Linux) 或.\venv\Scripts\activate
(Windows) - 安装Flask:
pip install flask
- 运行Flask应用:
python app.py
- 管理依赖:
pip freeze > requirements.txt
3. Flask 开发糕点网站的完整基础环境开发流程
3.1 基础开发环境
开发软件:visual studio code
python:3.12.3
数据库:mysql 8.0
3.2 创建文件夹,建立环境
3.2.1 创建文件夹Flask,在Flask下面创建cake_shop
3.3.2 建立虚拟环境
创建虚拟环境
在您的项目目录中创建一个虚拟环境:
cd D:\projects\Flask\cake_shop # 进入您的项目目录
python -m venv venv
# 创建虚拟环境
激活虚拟环境:
Windows:
.\venv\Scripts\activate
Mac/Linux:
source venv/bin/activate
3.3 安装必要的 Python 库
在虚拟环境中安装 Flask 和 MySQL 相关库:
pip install flask flask-mysqldb flask-sqlalchemy flask-migrate
-
Flask-MySQLdb:这是一个用于 Flask 与 MySQL 数据库连接的库。它封装了 MySQLdb 的接口,使得你能够在 Flask 中直接操作 MySQL 数据库。通过它,你可以执行 SQL 查询,增、删、改、查数据库内容。
-
Flask-SQLAlchemy:Flask-SQLAlchemy 是 Flask 与 SQLAlchemy 的集成扩展。SQLAlchemy 是 Python 中非常流行的 ORM(对象关系映射)工具,它简化了数据库交互,允许你通过 Python 类来操作数据库,而无需直接写 SQL 查询。Flask-SQLAlchemy 提供了对 SQLAlchemy 的简化支持,使得与数据库的交互更加方便。
-
Flask-Migrate:Flask-Migrate 是 Flask 的一个数据库迁移库,基于 Alembic。它用于数据库结构变更时进行版本控制,简化数据库迁移的过程。当你修改了数据库模型之后,Flask-Migrate 可以帮助你生成迁移脚本,并应用到数据库中,以保持数据库结构与代码的一致性。
3.4 配置数据库连接
3.4.1 配置 MySQL
首先,确保 MySQL 数据库中已创建数据库:
CREATE DATABASE cake_shop;
表代码参考:
sql
-- 用户表(包含头像字段)
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY, -- 主键
username VARCHAR(50) NOT NULL UNIQUE, -- 用户名,唯一
password VARCHAR(255) NOT NULL, -- 密码(加密存储)
email VARCHAR(100) NOT NULL UNIQUE, -- 邮箱
avatar_url VARCHAR(255), -- 用户头像 URL
role ENUM('admin', 'user') DEFAULT 'user',-- 用户角色(管理员或普通用户)
created_at DATETIME DEFAULT CURRENT_TIMESTAMP -- 创建时间
);
-- 糕点分类表
CREATE TABLE categories (
id INT AUTO_INCREMENT PRIMARY KEY, -- 主键
name VARCHAR(50) NOT NULL UNIQUE, -- 分类名称
description TEXT -- 分类描述
);
-- 糕点表
CREATE TABLE products (
id INT AUTO_INCREMENT PRIMARY KEY, -- 主键
name VARCHAR(100) NOT NULL, -- 糕点名称
description TEXT, -- 描述
price DECIMAL(10, 2) NOT NULL, -- 单价
stock INT NOT NULL DEFAULT 0, -- 库存数量
category_id INT NOT NULL, -- 分类 ID(外键)
created_at DATETIME DEFAULT CURRENT_TIMESTAMP, -- 创建时间
FOREIGN KEY (category_id) REFERENCES categories(id) -- 分类外键
);
-- 产品图片表(支持多张图片上传)
CREATE TABLE product_images (
id INT AUTO_INCREMENT PRIMARY KEY, -- 主键
product_id INT NOT NULL, -- 商品 ID(外键)
image_url VARCHAR(255) NOT NULL, -- 图片 URL
created_at DATETIME DEFAULT CURRENT_TIMESTAMP, -- 创建时间
FOREIGN KEY (product_id) REFERENCES products(id) -- 商品外键
);
-- 购物车表
CREATE TABLE cart_items (
id INT AUTO_INCREMENT PRIMARY KEY, -- 主键
user_id INT NOT NULL, -- 用户 ID(外键)
product_id INT NOT NULL, -- 商品 ID(外键)
quantity INT NOT NULL DEFAULT 1, -- 数量
added_at DATETIME DEFAULT CURRENT_TIMESTAMP, -- 添加时间
FOREIGN KEY (user_id) REFERENCES users(id), -- 用户外键
FOREIGN KEY (product_id) REFERENCES products(id) -- 商品外键
);
-- 订单表
CREATE TABLE orders (
id INT AUTO_INCREMENT PRIMARY KEY, -- 主键
user_id INT NOT NULL, -- 用户 ID(外键)
total_price DECIMAL(10, 2) NOT NULL, -- 总价
status ENUM('pending', 'completed', 'canceled') DEFAULT 'pending', -- 状态
created_at DATETIME DEFAULT CURRENT_TIMESTAMP, -- 创建时间
FOREIGN KEY (user_id) REFERENCES users(id) -- 用户外键
);
-- 订单详情表
CREATE TABLE order_details (
id INT AUTO_INCREMENT PRIMARY KEY, -- 主键
order_id INT NOT NULL, -- 订单 ID(外键)
product_id INT NOT NULL, -- 商品 ID(外键)
quantity INT NOT NULL, -- 数量
price DECIMAL(10, 2) NOT NULL, -- 单价
FOREIGN KEY (order_id) REFERENCES orders(id), -- 订单外键
FOREIGN KEY (product_id) REFERENCES products(id) -- 商品外键
);
-- 评价表
CREATE TABLE reviews (
id INT AUTO_INCREMENT PRIMARY KEY, -- 主键
product_id INT NOT NULL, -- 商品 ID(外键)
user_id INT NOT NULL, -- 用户 ID(外键)
rating INT NOT NULL CHECK (rating BETWEEN 1 AND 5), -- 评分(1-5 星)
comment TEXT, -- 评价内容
created_at DATETIME DEFAULT CURRENT_TIMESTAMP, -- 创建时间
FOREIGN KEY (product_id) REFERENCES products(id), -- 商品外键
FOREIGN KEY (user_id) REFERENCES users(id) -- 用户外键
);
-- 优惠券表
CREATE TABLE coupons (
id INT AUTO_INCREMENT PRIMARY KEY, -- 主键
code VARCHAR(20) NOT NULL UNIQUE, -- 优惠码
discount DECIMAL(5, 2) NOT NULL, -- 折扣比例(如 0.10 表示 10%)
expires_at DATETIME NOT NULL -- 到期时间
);
3.4.2 配置 Flask 与 MySQL 的连接
在项目中创建一个 config.py
配置文件,并进行配置:
python
# config.py
SQLALCHEMY_DATABASE_URI = 'mysql://your_mysql_user:your_mysql_password@localhost/cake_shop'
SQLALCHEMY_TRACK_MODIFICATIONS = False
SECRET_KEY = 'your_secret_key'
请将 your_mysql_user
和 your_mysql_password
替换为您的 MySQL 用户名和密码。
SECRET_KEY
Flask 使用 SECRET_KEY
来对 session 数据进行加密。Flask 默认使用一个加密机制将数据存储在浏览器的 cookie 中(即 session
)。没有这个密钥,用户的数据将无法正确加密和解密,导致安全风险。
如何生成 SECRET_KEY
?
-
手动生成 : 您可以使用任何随机生成的字符串(建议使用 32 字节 (或更长)长度的 随机字符串,包含字母、数字和符号,以增强安全性。),例如:
SECRET_KEY = 's3cr3t_r@nd0m_k3y_1234'
-
使用 Python 生成随机字符串 : 如果您希望生成一个更加复杂且随机的密钥,可以使用 Python 的
secrets
库:import secrets print(secrets.token_hex(16)) # 生成一个 32 字节的随机密钥
运行这段代码会生成一个类似于下面的密钥:
b9f4f8d6c8e9b8a1f7d9f2a3b52d6d56
3.5 创建 Flask 应用结构
创建以下项目结构与文件说明:
cake_shop/
├── app/
│ ├── init.py # 初始化 Flask 应用
│ ├── models.py # 数据库模型
│ ├── routes/ # 路由文件夹
│ │ ├── init.py
│ │ ├── auth.py # 用户认证
│ │ └── products.py # 商品管理
│ ├── templates/ # HTML 模板文件
│ └── static/ # 静态文件(CSS、JS、图片)
├── config.py # 配置文件
├── requirements.txt # 项目依赖
├── run.py # 启动文件
└── README.md # 项目说明,不上传github不用创建
3.5.1 创建必要文件
在项目目录中,手动创建目录和文件(命令创建不识别touch,需要手动创建)。
例如:
bash
mkdir app
mkdir app/routes
mkdir app/templates
mkdir app/static
touch app/__init__.py
touch app/models.py
touch app/routes/__init__.py
touch app/routes/auth.py
touch app/routes/products.py
touch run.py
touch config.py
touch requirements.txt
3.6 配置 Flask 与数据库连接检查
3.6.1 配置文件 (config.py
)
首先,在config.py
文件,用于存放数据库配置、密钥配置等信息。
python
# config.py
# 配置数据库 URI,连接 MySQL 数据库
SQLALCHEMY_DATABASE_URI = 'mysql://your_mysql_user:your_mysql_password@localhost/cake_shop'
# 关闭 Flask SQLAlchemy 的修改跟踪功能,减少内存消耗
SQLALCHEMY_TRACK_MODIFICATIONS = False
# 设置一个随机密钥用于加密session和CSRF令牌
SECRET_KEY = 'your_secret_key' # 这里的密钥可以手动生成一个随机的字符串
说明:
SQLALCHEMY_DATABASE_URI
: 配置连接 MySQL 数据库,替换your_mysql_user
和your_mysql_password
为您的 MySQL 用户和密码。SQLALCHEMY_TRACK_MODIFICATIONS
: 设置为False
以禁用 Flask SQLAlchemy 的修改跟踪功能,这样可以节省内存。SECRET_KEY
: Flask 使用这个密钥来对session
数据和 CSRF 令牌进行加密,确保安全性。您可以使用手动生成的随机字符串(如前面提到的使用secrets
库生成的密钥)。- 如何生成
SECRET_KEY
?-
使用 Python 生成随机字符串 : 如果您希望生成一个更加复杂且随机的密钥,可以使用 Python 的
secrets
库:import secrets print(secrets.token_hex(16)) # 生成一个 32 字节的随机密钥
运行这段代码会生成一个类似于下面的密钥:
b9f4f8d6c8e9b8a1f7d9f2a3b52d6d56
-
手动生成 : 您可以使用任何随机生成的字符串(建议使用 32 字节 (或更长)长度的 随机字符串,包含字母、数字和符号,以增强安全性。),例如:
SECRET_KEY = 's3cr3t_r@nd0m_k3y_1234'
-
3.6.2 在 app.py
进行数据库连接测试
在run.py
文件,内容如下:
python
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from config import SQLALCHEMY_DATABASE_URI, SQLALCHEMY_TRACK_MODIFICATIONS
# 初始化 Flask 应用
app = Flask(__name__)
# 加载配置
app.config['SQLALCHEMY_DATABASE_URI'] = SQLALCHEMY_DATABASE_URI
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = SQLALCHEMY_TRACK_MODIFICATIONS
# 初始化数据库对象
db = SQLAlchemy(app)
# 测试数据库连接
@app.route('/test-db')
def test_db_connection():
try:
# 尝试连接数据库,查询数据库中的所有表
result = db.session.execute('SHOW TABLES;')
tables = result.fetchall()
return f"Database connected successfully! Tables: {tables}"
except Exception as e:
return f"Error connecting to database: {e}"
if __name__ == '__main__':
app.run(debug=True)
3.6.3 测试数据库连接
(1) 启动 Flask 应用
在命令行中运行以下命令启动 Flask 应用:
python app.py
(2) 测试数据库连接
打开浏览器并访问 http://127.0.0.1:5000/test-db
,查看是否能够成功连接到数据库并列出数据库中的表。如果数据库连接成功,您会看到类似以下内容:
Database connected successfully! Tables: [('cart_items',), ('categories',), ('coupons',), ('order_details',), ('orders',), ('product_images',), ('products',), ('reviews',), ('users',)]
3.7 初始化数据库迁移
Flask-Migrate 用于数据库结构迁移,首先初始化迁移文件:
flask db init
flask db migrate -m "Initial migration"
flask db upgrade
3.8 创建第一个页面
在创建并配置完数据库连接后,接下来我们可以开发应用的第一个页面。这一部分将指导您如何创建一个简单的首页(例如 home,更多时候是index
页面),并通过 Flask 展示。
3.8.1 创建首页视图
(1)创建 routes
路由文件:
在 app/routes/
文件夹中,创建一个新的 Python 文件来定义首页的视图,命名为 home.py
。
在 app/routes/home.py
中,我们将定义一个路由,返回一个简单的欢迎页面。
python
from flask import Blueprint, render_template
# 创建蓝图
bp = Blueprint('home', __name__)
# 定义主页视图
@bp.route('/')
def home():
return render_template('home.html') # 渲染 home.html 模板
3.8.2 配置蓝图
在 app/__init__.py
中注册蓝图:
在 app/__init__.py
文件中,您需要注册 home
蓝图。打开并修改 app/__init__.py
,加入对 home
蓝图的注册。
python
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
db = SQLAlchemy()
migrate = Migrate()
def create_app(config_class='config'):
app = Flask(__name__)
app.config.from_object(config_class)
db.init_app(app)
migrate.init_app(app, db)
# 注册蓝图
from app.routes.home import bp as home_bp
app.register_blueprint(home_bp)
return app
如果有其他蓝图:
python
# 注册各个蓝图
from app.routes.home import bp as home_bp
from app.routes.auth import bp as auth_bp
from app.routes.products import bp as products_bp
app.register_blueprint(home_bp) # 注册首页和注册功能
app.register_blueprint(auth_bp) # 注册用户认证功能
app.register_blueprint(products_bp) # 注册商品功能
3.8.3 创建模板文件
在 app/templates/
文件夹中创建 home.html
:
在 home.html
中,我们可以添加简单的 HTML 代码来展示页面内容。
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Welcome to Cake Shop</title>
</head>
<body>
<h1>Welcome to the Cake Shop!</h1>
<p>Your favorite place for delicious cakes and pastries.</p>
</body>
</html>
3.8.4 启动 Flask 应用
重新修改 run.py文件
html
from app import create_app
app = create_app()
if __name__ == '__main__':
app.run(debug=True)
3.8.5 测试首页
(1)启动 Flask 应用:
运行以下命令来启动 Flask 应用:
python run.py
(2)访问首页:
打开浏览器并访问 http://127.0.0.1:5000/
,您应该会看到显示"Welcome to the Cake Shop!"的首页。
4.开发后续思路
4.1 开发流程与步骤
(1)用户模块
- 功能 :实现用户的注册、登录、角色管理、头像管理等。
- 用户模型:创建数据库模型,保存用户信息(用户名、密码、邮箱、头像等)。
- 注册和登录功能:处理用户的注册和登录请求,支持用户名、密码验证。
- 用户会话管理 :用户登录后保存其信息(例如,使用
session
进行会话管理)。 - 头像上传:支持用户修改头像并上传。
(2)商品模块
- 功能 :实现商品展示、分类、库存管理等功能。
- 商品模型:创建数据库模型,存储商品信息(名称、描述、价格、库存等)。
- 商品分类:根据类别展示商品,支持添加、删除和编辑商品分类。
- 商品展示:展示商品列表、商品详情页等。
- 商品图片管理:支持商品图片的上传和展示。
(3)购物车模块
- 功能 :实现商品加入购物车、查看购物车、删除购物车商品等功能。
- 购物车模型:创建购物车项模型,存储用户ID、商品ID和商品数量。
- 添加到购物车:用户可以将商品添加到购物车,修改数量等。
- 查看购物车:显示用户已添加到购物车的所有商品。
- 删除购物车商品:用户可以删除购物车中的商品。
(4)订单模块
- 功能 :实现订单生成、支付、查看历史订单等功能。
- 订单模型:存储订单信息,包括订单ID、用户ID、总价、状态等。
- 订单详情:每个订单包含详细的商品信息。
- 订单状态管理:管理订单的状态(待付款、已完成、已取消等)。
- 支付功能:实现订单的支付功能(可以模拟支付,或集成第三方支付平台)。
(5)评价模块
- 功能 :用户可以对商品进行评价,留下评分和评论。
- 评价模型:存储用户评价信息,包括商品ID、评分、评论内容等。
- 查看评价:展示商品的所有用户评价,按时间、评分等排序。
- 提交评价:用户在订单完成后可以对购买的商品进行评价。
(6)优惠券模块
- 功能 :为用户提供折扣优惠,用户可在结算时使用优惠券。
- 优惠券模型:存储优惠券信息(代码、折扣比例、过期时间等)。
- 领取优惠券:用户可以领取优惠券,系统会检查优惠券是否过期。
- 使用优惠券:在结算时,用户可以选择使用优惠券来减免部分费用。
4.2 最终目录结构
flask_cake_store/
│
├── app.py # Flask应用入口
├── config.py # 配置文件(数据库连接、密钥等)
├── models.py # 数据库模型(包括User, Product, Order等)
├── routes.py # 路由和视图函数(处理请求逻辑)
├── templates/ # HTML模板文件
│ ├── home.html # 首页模板,展示商品列表
│ ├── login.html # 用户登录页面
│ ├── product_list.html# 商品列表页面
│ ├── product_detail.html # 商品详情页面
│ ├── cart.html # 购物车页面
│ ├── order.html # 订单页面
│ └── review.html # 商品评价页面
└── static/ # 静态文件(CSS、JS、图片等)
├── styles.css # CSS样式文件
└── images/ # 图片文件夹(包含商品图片、用户头像等)
4.3 开发顺序建议
- 用户模块:先实现用户的基本功能(注册、登录、头像管理等)。
- 商品模块:实现商品展示、分类、库存管理等功能。
- 购物车模块:实现购物车的添加、删除和查看功能。
- 订单模块:实现订单生成、查看和支付功能。
- 评价模块:实现商品评价和查看评价功能。
- 优惠券模块:实现优惠券的管理和使用功能。