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

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

  • flask-version: 3.0.3
搭建项目框架
  • 项目入口 如 main.py 或者 manage.py 只做启动项目时间,与创建app,配置app进行解耦。
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等级不同。基本定义如下:
   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 = TrueLOG_LEVEL = logging.DEBUGclass ProduceComfig(Config):DEBUG = FalseLOG_LEVEL = logging.ERROR

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

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
def create_app(config_name):app = Flask(__name__)# 配置app.config.from_object(config_dict[config_name])# 配置数据库db.init_app(app)# 数据库迁移migrate = Migrate(app, db)# 配置redisglobal redis_storeredis_store = redis.StrictRedis(host=Config.REDIS_HOST, port=Config.REDIS_PORT)# 开启csrf保护CSRFProtect(app) # 解决csrf_token# 设置session保存位置Session(app)
关于数据库迁移

需先声明环境变量

#flask 迁移数据库
export FLASK_APP=manage.py
flask db init # once need 只需要在第一次同步数据库的时候用
flask db mgrate -m''
flask db upgrade
关于静态文件
  • 需要定义在module 目录下
http://www.lryc.cn/news/626933.html

相关文章:

  • 算法230. 二叉搜索树中第 K 小的元素
  • 雷卯针对香橙派Orange Pi 5B开发板防雷防静电方案
  • 力扣hot100:最大子数组和的两种高效方法:前缀和与Kadane算法(53)
  • Deepseek+python自动生成禅道测试用例
  • 自动化测试用例生成:基于Python的参数化测试框架设计与实现
  • 记一次pnpm start启动异常
  • Spring Boot 3整合Nacos,配置namespace
  • 质谱数据分析环节体系整理
  • Rust 入门 包 (二十一)
  • 内网环境给VSCode安装插件
  • PostgreSQL 流程---更新
  • 基于51单片机自动浇花1602液晶显示设计
  • Notepad++批量转UTF-8脚本
  • 测试DuckDB插件对不同格式xlsx文件的读写效率
  • 基于Pytochvideo训练自己的的视频分类模型
  • 【C++】基础:C++11-14-17常用新特性介绍
  • XR(AR/VR/MR)芯片方案,Soc VS “MCU+协处理器”?
  • 109、【OS】【Nuttx】【周边】效果呈现方案解析:workspaceStorage(下)
  • 【最后203篇系列】034 使用SQLite构建简单的任务管理
  • 解决Docker 无法连接到官方镜像仓库
  • LINUX 820 shell:shift,expect
  • 49 C++ STL模板库18-类模板-pair
  • 双模式 RTMP H.265 播放器解析:从国内扩展到 Enhanced RTMP 标准的演进
  • 深入理解JVM内存结构:从字节码执行到垃圾回收的全景解析
  • 基于单片机智能加湿器/空气加湿器
  • ubuntu系统上的conda虚拟环境导出方便下次安装
  • 计算机毕设Spark项目实战:基于大数据技术的就业数据分析系统Django+Vue开发指南
  • Typescript入门-数组元组讲解
  • CSS3DRenderer+ CSS3DObject实现在 Three.js 中添加文本内容
  • 监听视频是否加载完毕