当前位置: 首页 > news >正文

python+flask后端开发~项目实战 | 博客问答项目--模块化文件架构的基础搭建

在这里插入图片描述
项目功能概述

  • 首页(公开博客显示)
  • 博客发布与查询
  • 用户登录与注册
  • 底层MySQL数据库的动态响应与支持

简介Flask作为Python的一个轻量级Web框架,以其灵活性和可扩展性,赢得了众多开发者的青睐。从本文开始,你将从0开始与我一起搭建一个公开式,配备底层数据库支持的博客问答项目。在项目实战中,你不仅可以进一步深入了解Flask框架的核心概念,还将掌握如何搭建一个模块化的Flask支持的后端项目架构,为构建复杂的Web应用奠定坚实的基础。

目录

一、基础项目文件架构的搭建
二、子文件的功能介绍
2.1 blueprints/
2.2 static/
2.3 templates/
2.4 app.py
2.5 config.py
2.6 exts.py
2.7 models.py
三、其它软件环境配置
3.1 MySQL安装: 采用集成式管理软件
3.2 浏览器准备: Chrome
3.3 前后端请求响应测试平台: Apifox
四、结束语


🚀 读完本文,你将开始以下超实用技能和知识储备的学习之旅

  • 逐步掌握Flask框架的基本使用:逐步学会从零开始搭建一个Flask项目,理解其工作原理和基本配置。
  • 逐步学会构建模块化文件架构:学会通过合理划分项目文件结构,提高代码的可维护性和可扩展性。
  • 逐步熟悉数据库的集成与操作:逐渐深入了解如何在Flask项目中集成MySQL数据库,并进行基本的数据操作。
  • 逐步掌握前后端交互的基本方法:逐渐学会使用Apifox等工具测试前后端的请求响应,确保数据交互的正确性。

一、基础项目文件架构的搭建

在开始编写代码之前,我们需要先搭建一个合理的项目文件架构。一个良好的文件架构可以让我们在开发过程中更加高效地管理代码,便于后续的维护和扩展。以下是我们的博客问答项目的基础文件架构

flask_project/
│── blueprints/
│ ├── init.py
│ ├── author.py
│ ├── ques_ans.py
│── static/
│── templates/
│── app.py/
│── config.py/
│── exts.py/
│── models.py/

如下图所示:

在这里插入图片描述

flask项目的创建在PyCharm中进行,读者可访问我之前的文章学习如何快速创建一个flask项目:python+flask后端开发系列 | 15分钟把第一个 Flask 项目跑起来!。

flask项目新建成功后,会自动生成statictemplatesapp.py三个文件,上述文件结构中的其它文件,读者自行创建即可,以下我将详细介绍每个模块的具体功能和用途,跟我一起往下阅读叭!

二、子文件的功能介绍

2.1 blueprints/

  • blueprints/:用于存放蓝图(Blueprints),每个蓝图代表一个功能模块,主要用于视图函数的模块化设计与开发。

蓝图(Blueprints)是Flask中用于模块化可重用视图、模板、静态文件等的一种方式。我们可以通过蓝图将项目拆分为多个功能模块,每个模块都有自己的视图函数模板静态文件

这里,我再blueprints/目录下创建了两个脚本文件authou.pyques_ans.py,用于后续分别存放与用户注册和博客发布查询的相关视图函数模块:url_prefix=""用于指定该模块的根目录,后续在该模块开发的所有视图函数均以url_prefix=""指定的目录为开头。

  1. authou.py
from flask import Blueprint# /author/
BPObj = Blueprint("author", __name__, url_prefix="/author")BPObj.route('/login')def auth_login():pass
  1. ques_ans.py
from flask import Blueprint# /
BPObj = Blueprint("author", __name__, url_prefix="/")BPObj.route('/')def index():pass

上述两个脚本在app.py中使用app.register_blueprint()函数注册蓝图,将蓝图中的视图函数添加到应用中。

2.2 static/

  • static/:存放静态文件,如CSS、JavaScript和图片等。

静态文件是指不会被服务器动态生成的文件,如CSS样式表JavaScript脚本图片等。在Flask中,静态文件存放在static/目录下,可以通过url_for('static', filename='...')函数访问。

读者可以参考我之前的文章以快速了解静态资源文件的加载与使用:Python + Flask 后端开发系列 | Jinja2 模板中的静态文件加载与使用细节

2.3 templates/

  • templates/:存放HTML模板文件,用于渲染页面。

模板文件是用于生成HTML页面的文件,通常存放在templates/目录下。Flask使用Jinja2模板引擎来渲染模板文件,支持变量替换、循环、条件判断等功能。

读者可以参考我之前的文章快速了解flask架构中模板文件的使用与继承机制:python+flask后端开发系列 | Jinja2下HTML模板的继承机制与应用场景

2.4 app.py

  • app.py:项目的入口文件,用于启动应用。
# -*- coding: utf-8 -*-
# 从flask包中导入flask类
from flask import Flask
# 导入config
import config
# 导入SQLAlchemy对象
from exts import DB
# 导入用户对象
from models import UserModel
# 导入视图函数的蓝图对象
from blueprints.author import BPObj as auth_BPObj
from blueprints.ques_ans import BPObj as qa_BPObj# 从flask类中创建一个app对象
app = Flask(__name__)
# 将config配置导入flask对象,绑定配置文件
app.config.from_object(config)
# 将SQLAlchemy对象与app对象绑定
DB.init_app(app)
# 将蓝图对象注册到app中
app.register_blueprint(auth_BPObj)
app.register_blueprint(qa_BPObj)@app.route('/')
def hello_world():return 'hello world'if __name__ == '__main__':app.run()

app.py中,所有的配置、扩展、脚本等都被注册与整合,所以,在flask项目模块化开发中,app.py的作用更像是一个中枢机构,用于整合资源与调度,并不直接在其中进行源码的开发

2.5 config.py

  • config.py:配置文件,用于存放应用的配置信息,如数据库配置信息等。
from flask_sqlalchemy import SQLAlchemy# 创建数据库扩展对象
db = SQLAlchemy()

上述代码中,SQLAlchemy类用于创建数据库扩展对象,通过在app.py文件中使用db.init_app(app)方法将其初始化。

2.6 exts.py

  • exts.py:存放扩展模块,如数据库扩展。
# 扩展插件from flask_sqlalchemy import SQLAlchemyDB = SQLAlchemy()

2.7 models.py

  • models.py:定义数据库模型,用于操作数据库。
from exts import DBclass UserModel(DB.Model):pass

三、其它软件环境配置

3.1 MySQL安装: 采用集成式管理软件

为了方便管理MySQL数据库,我们可以使用集成式管理软件Navicat。Navicat软件提供了图形化界面,方便我们进行数据库的创建、表的创建、数据的插入等操作。
在这里插入图片描述

读者可以参考我之前的文章快速了解flask架构中MySQL数据库的使用与链接:Python + Flask 后端开发~进阶系列 | Flask与底层数据库(MySQL)的连接

3.2 浏览器准备: Chrome

在开发过程中,我们需要使用浏览器来测试应用的前端页面。推荐使用Chrome浏览器,因为它提供了丰富的开发者工具,方便我们调试和优化页面。
在这里插入图片描述

3.3 前后端请求响应测试平台: Apifox

Apifox是一个强大的前后端请求响应测试平台,支持多种编程语言和框架。我们可以使用它来测试Flask应用的API接口,确保前后端的数据交互正确无误。

可以访问官网进行项目注册与设置,我们将在后续开发中使用!https://app.apifox.com/
在这里插入图片描述

四、结束语

通过本文的学习,你已经掌握了如何搭建一个模块化的Flask后端项目架构,并了解了各个文件的功能和作用。这只是一个开始,Flask的强大之处在于它的灵活性和可扩展性。我将以上述文件结构为基础在后续继续扩展项目功能,添加更多的模块和功能。

关注专栏,我将在后续文章中带你一步一步搭建一个灵活的博客问答项目,为你的flask前后端开发提供一些项目经验与技术查询字典!


最后,感谢你的阅读!如果你觉得本文对你有帮助,不妨点赞和关注,我会继续分享更多关于 Python 和 Flask 开发的实用知识。🚀

我的邮箱:yifanduan@stu.ncst.edu.cn.

关注专栏每周更新,带你从“第一个 Flask 项目”一路进阶到“Docker 部署、JWT 鉴权、微服务拆分”。

版权归作者所有,未经许可请勿抄袭,套用,商用(或其它具有利益性行为)。

http://www.dtcms.com/a/336268.html

相关文章:

  • Valgrind 并发调试 ·:用 Helgrind 抓住线程里的“看不见的错”
  • 数据结构:在二叉搜索树中插入元素(Insert in a BST)
  • linux-高级IO(上)
  • 猫头虎AI分享|一款Coze、Dify类开源AI应用超级智能体Agent快速构建工具:FastbuildAI
  • #买硬盘欲安装k8s记
  • Flutter 3.35 更新要点解析
  • ICCV 2025 | Reverse Convolution and Its Applications to Image Restoration
  • 如何运用好DeepSeek为自己服务:智能增强的范式革命 1.2 DeepSeek认知增强模型
  • 计算机基础速通--数据结构·图的基础应用三(基础图算法进阶)
  • Tauri 框架介绍
  • 《Nursing Research》(护理SCI)LaTeX模板详细教程:从入门到投稿(一)
  • 炒股术语:“洗盘”
  • LLM入门学习
  • 【165页PPT】锂电池行业SAP解决方案(附下载方式)
  • 【C++】Windows 下 TCP接口超详介绍,如何实现一个TCP服务端和客户端
  • 又一家茑屋书店即将歇业,精品书店的未来在哪里?
  • ruoyi-vue(十一)——代码生成
  • Python爬虫实战:研究optimesh库,构建Github网格数据采集系统
  • AntSK-PyAPI技术深度解析:打造企业级文本嵌入向量服务的完整指南
  • C语言(12)——进阶函数
  • 【Linux】文件基础IO
  • 软件需求High-Level(高层级)需求和Low-Level(低层级)需求
  • rt-thread audio框架移植stm32 adc+dac,用wavplayer录音和播放
  • 测试Windows10IoT系统是否可以正常运行KingSCSDA3.8软件
  • python的软件工程与项目管理课程组学习系统
  • 算法第四十八天:单调栈part01(第十章)
  • C++ 力扣 904.水果成篮 题解 优选算法 滑动窗口 每日一题
  • 算法03 归并分治
  • 最优化:建模、算法与理论|02 Optimization Modeling and Typical Examples(1)
  • Linux:TCP协议