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项目新建成功后,会自动生成static、templates和app.py三个文件,上述文件结构中的其它文件,读者自行创建即可,以下我将详细介绍每个模块的具体功能和用途,跟我一起往下阅读叭!
二、子文件的功能介绍
2.1 blueprints/
blueprints/
:用于存放蓝图(Blueprints),每个蓝图代表一个功能模块,主要用于视图函数的模块化设计与开发。
蓝图(Blueprints)是Flask中用于模块化可重用视图、模板、静态文件等的一种方式。我们可以通过蓝图将项目拆分为多个功能模块,每个模块都有自己的视图函数、模板和静态文件。
这里,我再blueprints/
目录下创建了两个脚本文件,authou.py
和ques_ans.py
,用于后续分别存放与用户注册和博客发布查询的相关视图函数模块:url_prefix=""
用于指定该模块的根目录,后续在该模块开发的所有视图函数均以url_prefix=""
指定的目录为开头。
authou.py
from flask import Blueprint# /author/
BPObj = Blueprint("author", __name__, url_prefix="/author")BPObj.route('/login')def auth_login():pass
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 鉴权、微服务拆分”。
版权归作者所有,未经许可请勿抄袭,套用,商用(或其它具有利益性行为)。