关于 Flask 3.0+的 框架的一些复习差异点

  • flask-version: 3.0.3
搭建项目框架
  • 项目入口 如 main.py 或者 manage.py 只做启动项目时间,与创建app,配置app进行解耦。
python 复制代码
from school import create_app, db, setup_log
app = create_app("development")
setup_log('development')

if __name__ == '__main__':
    app.run(host="127.0.0.1", port=5000, debug=True)
  • 创建模块module和log目录以及 config.py 配置文件夹。
    • module 模块存放子模块,包含蓝图以及子视图的逻辑
    • log 目录用以存放log文件,用current_app.logger.error(e) 进行调用, log配置函数定义在module文件夹的 __init__.py
    • config 文件 用来存放 不同开发环境的配置,比如 开发环境 测试环境 生产环境,对应的 debug等级不同。基本定义如下:
python 复制代码
   class Config(object):
   """工程配置信息"""
   SECRET_KEY = "xxx/+xss+xxx"

   # 数据库的配置信息
   SQLALCHEMY_DATABASE_URI = "mysql+pymysql://root:mysql@127.0.0.1:3306/school"
   SQLALCHEMY_TRACK_MODIFICATIONS = True

   # redis配置
   REDIS_HOST = "127.0.0.1"
   REDIS_PORT = 6379

   # session 配置
   SESSION_TYPE = "redis"  # 指定 session 保存到 redis 中
   SESSION_USE_SIGNER = True  # 让 cookie 中的 session_id 被加密签名处理
   SESSION_REDIS = redis.StrictRedis(host=REDIS_HOST, port=REDIS_PORT)  # 使用 redis 的实例
   PERMANENT_SESSION_LIFETIME = 86400  # session 的有效期,单位是秒


class DevelopmentConfig(Config):
   DEBUG = True
   LOG_LEVEL = logging.DEBUG

class ProduceComfig(Config):
   DEBUG = False
   LOG_LEVEL = logging.ERROR

这里需要注意 在使用 orm 的时候

python 复制代码
pip install flask-sqlalchemy
pip install flask-mysqldb
# 那么在Config函数中配置 mysql 就需要 mysql+pymysql 不然报错
 SQLALCHEMY_DATABASE_URI = "mysql+pymysql://root:mysql@127.0.0.1:3306/school"
 SQLALCHEMY_TRACK_MODIFICATIONS = True
  • module 文件夹下 init .py 要处理如下事情
    • 配置数据库
    • 配置redis
    • 数据库迁移
    • 开启csrf 防护
    • 函数入口 -index
    • 请求钩子处理 如 404页面 和 设置 cookie
python 复制代码
def create_app(config_name):
    app = Flask(__name__)
    # 配置
    app.config.from_object(config_dict[config_name])
    # 配置数据库
    db.init_app(app)
    # 数据库迁移
    migrate = Migrate(app, db)
    # 配置redis
    global redis_store
    redis_store = redis.StrictRedis(host=Config.REDIS_HOST, port=Config.REDIS_PORT)
    # 开启csrf保护
    CSRFProtect(app) # 解决csrf_token
    # 设置session保存位置
    Session(app)
关于数据库迁移

需先声明环境变量

python 复制代码
#flask 迁移数据库
export FLASK_APP=manage.py
flask db init # once need 只需要在第一次同步数据库的时候用
flask db mgrate -m''
flask db upgrade
关于静态文件
  • 需要定义在module 目录下
相关推荐
m0_748554816 小时前
golang如何实现用户订阅偏好管理_golang用户订阅偏好管理实现总结
jvm·数据库·python
smj2302_796826527 小时前
解决leetcode第3911题.移除子数组元素后第k小偶数
数据结构·python·算法·leetcode
阿正呀8 小时前
Redis怎样实现本地缓存的高效失效通知
jvm·数据库·python
2501_901200538 小时前
mysql如何设置InnoDB引擎参数_优化innodb_buffer_pool
jvm·数据库·python
_.Switch8 小时前
东方财富股票数据JS逆向:secids字段和AES加密实战
开发语言·前端·javascript·网络·爬虫·python·ecmascript
Mr_sst8 小时前
Claude Code 部署与使用保姆级教程(2026 最新)
python·ai
瞎某某Blinder8 小时前
DFT学习记录[6]基于 HES06的能带计算+有效质量计算
python·学习·程序人生·数据挖掘·云计算·学习方法
m0_495496419 小时前
mysql处理复杂SQL性能_InnoDB优化器与MyISAM差异
jvm·数据库·python
forEverPlume10 小时前
PHP怎么使用Eloquent Attribute Composition属性组合_Laravel通过组合构建复杂属性【方法】
jvm·数据库·python
Aleeeeex10 小时前
RAG 那点事:从 8 份企业文档到能用的问答系统,全过程拆给你看
人工智能·python·ai编程