使用 Flask 3 搭建问答平台(一):项目结构搭建

一、项目基本结构

二、app.py

python 复制代码
from flask import Flask
import config
from exts import db
from models import UserModel
from blueprints.qa import bp as qa_bp
from blueprints.auth import bp as auth_bp

# 创建一个Flask应用实例,__name__参数帮助Flask确定应用程序的根目录,以便于找到资源文件。
app = Flask(__name__)
# 从一个配置对象加载配置参数。config可以是一个配置类或模块,包含应用程序的各种配置设置,例如数据库URI、调试模式等
app.config.from_object(config)
# 使用之前创建的SQLAlchemy实例(db),并将其与Flask应用实例绑定。这样,数据库操作可以在Flask应用的上下文中进行
db.init_app(app)
# 将名为qa_bp的蓝图注册到Flask应用中,并为其指定URL前缀/qa。这样,蓝图中的所有路由都会以/qa为前缀
app.register_blueprint(qa_bp, url_prefix='/qa')
# 将名为auth_bp的蓝图注册到Flask应用中,并为其指定URL前缀/auth。这样,蓝图中的所有路由都会以/auth为前缀
app.register_blueprint(auth_bp, url_prefix='/auth')


@app.route('/')
def hello_world():  # put application's code here
    return 'Hello World!'


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

三、exts.py

python 复制代码
# 这个文件存在是为了解决循环引用的问题
from flask_sqlalchemy import SQLAlchemy

# 通过调用SQLAlchemy(),创建一个SQLAlchemy的实例。在这个实例上可以配置和管理数据库连接、定义数据库模型、执行查询等
db = SQLAlchemy()

四、models.py

python 复制代码
from exts import db


class UserModel(db.Model):
    pass

五、auth.py

python 复制代码
from flask import Blueprint

# 创建一个蓝图
# bp是一个Blueprint实例。
# 'auth'是蓝图的名称,通常用来标识这个蓝图的用途或功能区域。
# __name__是蓝图所在模块的名称,Flask用它来确定蓝图的位置。
# url_prefix='/auth'指定了这个蓝图的URL前缀。所有由这个蓝图注册的路由都会以这个前缀开头。
bp = Blueprint('auth', __name__, url_prefix='/auth')


# /auth/login
@bp.route('/login', methods=['GET'])
def login():
    pass

六、qa.py

python 复制代码
from flask import Blueprint

# 创建一个蓝图
# bp是一个Blueprint实例。
# 'qa'是蓝图的名称,通常用来标识这个蓝图的用途或功能区域。
# __name__是蓝图所在模块的名称,Flask用它来确定蓝图的位置。
# url_prefix='/'指定了这个蓝图的URL前缀。所有由这个蓝图注册的路由都会以这个前缀开头。
bp = Blueprint('qa', __name__, url_prefix='/')


# http://127.0.0.1:5000
@bp.route('/', methods=['GET'])
def index():
    pass
相关推荐
晴殇i几秒前
最近在 Github 名字叫“马尾辫”,这个真的很有趣看到头像
前端·后端·开源
zzzzzz310几秒前
LLM 成本治理:从 token 账单到线上熔断,团队应该先做哪三件事?
人工智能·python·api
IT_陈寒20 分钟前
Vite打包时静态资源404?加个斜杠就能解决
前端·人工智能·后端
程序员爱钓鱼27 分钟前
Go 输入输出详解
后端·面试·go
AC赳赳老秦34 分钟前
网页公开附件自动采集:OpenClaw 批量下载页面内嵌 Word/Excel 附件,统一格式后结构化入库
java·python·word·php·excel·deepseek·openclaw
北斗落凡尘34 分钟前
LangGraph 入门实战(3)
python·langchain
程序员爱钓鱼35 分钟前
Rust 生命周期详解:生命周期标注、约束与真实项目应用
后端·面试·rust
MoonBit月兔37 分钟前
MoonBit 受邀亮相 SPLASH/ISSTA 2026,与 Java、Rust、Eiffel、D 语言核心贡献者同场交流
开发语言·后端·rust
TAN-90°-1 小时前
Deep Learning for Computer Vision——Image Classification with Linear Classifiers
python·深度学习·算法·计算机视觉·线性回归
AINative软件工程1 小时前
LLM API 成本失控怎么办?工程师的实时异常检测指南
python