【Flask项目】代码抽取 # 3

上部分我们将所有的代码都写在了一个文件中,

现在我们将它们抽取出来保存在不同的文件中,方便后续的修改与维护。

抽取Config:

# config.py

from redis import StrictRedis


class Config(object):
    """ 配置信息 """
    DEBUG = True
    _DATABASE_URI = "mysql://root:123456@127.0.0.1:3306/news_20"
    SQLALSQLALCHEMYCHEMY_TRACK_MODIFICATIONS = False
    REDIS_HOST = "127.0.0.1"
    REDIS_POST = 6379
    SECRET_KEY = "a1b2c3d4"
    SESSION_TYPE = "redis"
    SESSION_REDIS = StrictRedis(host=REDIS_HOST, port=REDIS_POST)
    SESSION_USE_SIGNER = True
    PERMANENT_SESSION_LIFETIME = 60*60*24

在使用配置信息的过程中会发现,往往会在不同的使用环境下需要不同的配置。

大体可分为三个环境:开发环境,生产环境,测试环境,

因此,通过继承的方式:

# config.py


class DevelopmentConfig(Config):
    """开发环境"""
    pass


class ProductionConfig(Config):
    """生产环境"""
    DEBUG = False


class UnittestConfig(Config):
    """测试环境"""
    pass


# 用于传参选择环境
config_names = {
    "dev": DevelopmentConfig,
    "pro": ProductionConfig,
    "uni": UnittestConfig
}

抽取创建/操作app:

将创建app的过程封装进函数。

将db套 SQLAlchemy 的空壳,在创建app的函数同时对db进行初始化。

config_name传参选择使用哪种环境。

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_wtf import CSRFProtect
from flask_session import Session
from redis import StrictRedis
from config import config_names  # 对应config.py

db = SQLAlchemy()


def create_app(config_name):
    app = Flask(__name__)
    app.config.from_object(config_names[config_name])
    db.init_app(app)
    sr = StrictRedis(host=config_names[config_name].REDIS_HOST, port=config_names[config_name].REDIS_POST)
    CSRFProtect(app)
    Session(app)
    return app

开启服务主函数:

from flask_script import Manager
from flask_migrate import Migrate, MigrateCommand
from info import create_app, db


app = create_app("dev")
manager = Manager(app)
Migrate(app, db)
manager.add_command("mysql", MigrateCommand)


if __name__ == '__main__':
    manager.run()

文件夹展示:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值