抽离成3大模块
1、主函数,运行模块
from flask_script import Manager
from flask_migrate import Migrate, MigrateCommand
from info import create_app, db
from config import *
app = create_app(DevelopmentConfig)
manager = Manager(app)
Migrate(app, db)
manager.add_command('db', MigrateCommand)
@app.route('/')
def hello_world():
# redis_store.setex('name', 10, 'itheima')
# session['name'] = 'zhubo'
return 'Hello World!'
if __name__ == '__main__':
manager.run()
2、config加载模块
import redis
# 配置信息
class Config(object):
# 配置mysql数据库
SQLALCHEMY_DATABASE_URI = 'mysql://root:mysql@127.0.0.1/information11'
SQLALCHEMY_TRACK_MODIFICATIONS = False
# 配置redis数据库
REDIS_HOST = '127.0.0.1'
REDIS_PORT = 6379
SECRET_KEY = "EjpNVSNQTyGi1VvWECj9TvC/+kq3oujee2kTfQUs8yCM6xX9Yjq52v54g+HVoknA"
# flask-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 ProductionConfig(Config):
DEBUG = False
# 正式开发中, 还需要更改mysql/redis的数据库配置(测试/正式)
# SQLALCHEMY_DATABASE_URI = 'mysql://root:mysql@177.13.1.1/information11'
class DevelopmentConfig(Config):
DEBUG = True
3、app运行及扩展模块 为__init__模块
import redis
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_session import Session
from config import *
db = SQLAlchemy()
redis_store = None
# 提供工厂方法, 方便的通过配置参数的更改, 实现不同app的创建
def create_app(config_name):
app = Flask(__name__)
app.config.from_object(config_name)
# 几乎所有的扩展, 都支持这种创建方式
db.init_app(app)
global redis_store
redis_store = redis.StrictRedis(host=config_name.REDIS_HOST, port=config_name.REDIS_PORT)
# Flask-session扩展对象. 将存储到浏览器cookie中的session信息, 同步到指定地方(Redis)
Session(app)
return app