当前位置: 首页 > 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.lryc.cn/news/623465.html

相关文章:

  • C++算法题目分享:二叉搜索树相关的习题
  • 【前端基础】flex布局中使用`justify-content`后,最后一行的布局问题
  • ubuntu 24.04 安装
  • Android RxJava线程调度与性能优化指南
  • (一)前端面试(cookie/)
  • PostgreSQL导入mimic4
  • 数据结构代码分享-1 顺序表
  • 简单的 VSCode 设置
  • Oracle algorithm的含义
  • 基于Vue + Node能源采购系统的设计与实现/基于express的能源管理系统#node.js
  • Qt 5.5 的安装与配置(使用 VSCode编辑)
  • 【架构师从入门到进阶】第五章:DNSCDN网关优化思路——第十二节:网关安全-信息过滤
  • 基于多Agent的AFSIM复杂场景脚本生成技术(使用Claude Code)
  • 根号算法Ⅰ
  • 天地图应用篇: 增加缩放、比例尺控件
  • 24. 什么是不可变对象,好处是什么
  • 【Docker】搭建一款功能强大且免费的开源在线绘图工具 - draw.io
  • 云原生俱乐部-RH134知识点总结(2)
  • 62.不同路径
  • 【计算机网络面试】键入网址到网页显示期间,发生了什么?
  • 网络常识-DNS如何解析
  • 数据结构初阶(19)外排序·文件归并排序的实现
  • Ugit使用记录
  • 【自动化运维神器Ansible】template流程控制:for循环与if条件判断详解
  • Flink作业执行的第一步:DataFlow graph的构建
  • C11期作业18(07.12)
  • 栈与队列:数据结构中的双生子
  • 【JavaEE】多线程 -- 单例模式
  • [python学习记录2]变量
  • Maven 开发实践