关于 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 目录下