主函数
from flask import session
from flask_script import Manager
from flask_migrate import MigrateCommand
from info import create_app
# 创建web应用
app = create_app("dev")
# 创建管理器
mgr = Manager(app)
# 使用管理器生成迁移命令
mgr.add_command("mc", MigrateCommand)
if __name__ == '__main__':
mgr.run()
项目配置
from datetime import timedelta
from redis import Redis
# 定义配置类来封装配置信息
class Config:
DEBUG = True # 设置调试模式
SQLALCHEMY_DATABASE_URI = "mysql://root:mysql@127.0.0.1:3306/info22" # 数据库连接地址
SQLALCHEMY_TRACK_MODIFICATIONS = False # 是否追踪数据库变化
REDIS_HOST = "127.0.0.1" # redis的连接地址 将自定义的配置也封装到Config类中
REDIS_PORT = 6379
SESSION_TYPE = "redis" # 设置session存储的方式 redis 性能好,方便设置过期时间
SESSION_REDIS = Redis(host=REDIS_HOST, port=REDIS_PORT) # 设置Redis连接对象, 组件会使用该对象将session数据保存到redis中
SESSION_USE_SIGNER = True # 设置sessionid进行加密
SECRET_KEY = "test" # 设置sessionid的秘钥
PERMANENT_SESSION_LIFETIME = timedelta(days=7) # 设置session过期时间 组件默认支持设置过期时间
# 配置信息子类化
class DevelopmentConfig(Config): # 开发环境配置信息
DEBUG = True # 设置调试模式
class ProductionConfig(Config): # 生产环境配置信息
DEBUG = False
# 让配置字典来记录配置类型和配置类的对应关系
config_dict = {
"dev": DevelopmentConfig,
"pro": ProductionConfig
}
创建应用以及框架初始化
from flask import Flask
from flask_migrate import Migrate
from flask_session import Session
from flask_sqlalchemy import SQLAlchemy
from redis import Redis
from config import config_dict
# 定义全局变量, 记录数据库连接对象, 以便其他文件可以使用
db = None # type: SQLAlchemy
rs = None # type: Redis
# 封装应用的创建过程 工厂函数: 让外界提供物料, 在函数内部封装对象的创建过程
def create_app(config_type):
config_class = config_dict[config_type]
# 创建web应用
app = Flask(__name__)
# 从对象中加载配置
app.config.from_object(config_class)
# 声明全局变量
global db, rs
# 创建msql连接对象
db = SQLAlchemy(app)
# 创建redis连接对象
rs = Redis(host=config_class.REDIS_HOST, port=config_class.REDIS_PORT)
# 初始化session存储对象
Session(app)
# 初始化迁移器
Migrate(app, db)
# 注册蓝图对象
# 为了避免导入错误, 对于只使用一次的内容, 在使用前才导入
from info.home import home_blu
app.register_blueprint(home_blu)
return app
使用蓝图创建视图函数
from flask import Blueprint
# 创建蓝图对象
home_blu = Blueprint("home", __name__)
from .views import *`在这里插入代码片`
from info.home import home_blu
from info import rs
# 使用蓝图来注册路由
@home_blu.route('/')
def index():
rs.set("name", "zs")
return "index"