项目骨架详解

一,基本框架的搭建

目录截图

1, manager 模块
1),用来管理程序的启用!
2),可以用来执行数据库的迁移
from flask_migrate import MigrateCommand, Migrate
from Flask_.templates import add_app, db
from flask_script import Manager
from Flask_.setting import ProductionConfig, DevelopmentConfig

# 用来配置信息的
app = add_app(ProductionConfig)

# 管理器对象!用来进行数据库的迁移!
manager = Manager(app, db)

Migrate(app, db)
manager.add_command('db', MigrateCommand)

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

'''
    完成发布与开发阶段的调试是通过一个方法来更改的类型!
    redis 也需要配置到setting 之中!

'''
View Code
2,setting 模块用来设置配置参数的
1),配置mysql数据库的信息
2),配置redis的信息
3),session 保存到redis数据库所需要的参数!
4),所有的信息都从setting之中获取!
import logging
import redis
import os,base64

class Config():
    '''mysql 配置'''
    SQLALCHEMY_DATABASE_URI = 'mysql://root:x@127.0.0.1:3306/manager'
    SQLALCHEMY_TRACK_MODIFICATIONS = False
    SQLALCHEMY_ECHO = False

    '''redis 配置,如果想要启用Session 存储到Redis之中需要配置!'''
    REDIS_POST = '127.0.0.1'
    REDIS_PORT = 6379
    '''一下是session 存储到redis 必须的几个信息!'''
    SESSION_TYPE = 'redis'
    SESSION_REDIS = redis.StrictRedis(host=REDIS_POST, port=REDIS_PORT)
    PERMANENT_SESSION_LIFETIME = 86400 * 7 #有效时间为7天
    SECRET_KEY = base64.b64encode(os.urandom(32))


# 通过继承与增加 debug,根据不同的类来解决不同log等级问题!
class DevelopmentConfig(Config):
    """开发模式下的配置"""
    DEBUG = True
    LOGE_live = logging.debug


class ProductionConfig(Config):
    """生产模式下的配置"""
    DEBUG = True
    LOGE_live = logging.WARN
View Code
3,__init__ 是用来具体的工作开启
1),app 的开启
2),mysql 的连接,从setting之中拿配置信息
3),redis 的连接,并且返回一个接口,供视图连接调用操作
4),session 存储到redis的
import logging
from logging.handlers import RotatingFileHandler
from flask import Flask
from flask_session import Session
from flask_sqlalchemy import SQLAlchemy
from flask_wtf import CSRFProtect
from Flask_.setting import redis

#创建数据库!
db = SQLAlchemy()
#设置redis 存储对象,供视图调用!
redis_store = None


def log_set_up(config_add):
    # 设置日志的记录等级,根据不同的模式设置不同的level!
    logging.basicConfig(level=config_add.DELOGE_live)  # 调试debug级
    # 创建日志记录器,指明日志保存的路径、每个日志文件的最大大小、保存的日志文件个数上限
    file_log_handler = RotatingFileHandler("logs/log", maxBytes=1024 * 1024 * 100, backupCount=10)
    # 创建日志记录的格式 日志等级 输入日志信息的文件名 行数 日志信息
    formatter = logging.Formatter('%(levelname)s %(filename)s:%(lineno)d %(message)s')
    # 为刚创建的日志记录器设置日志记录格式
    file_log_handler.setFormatter(formatter)
    # 为全局的日志工具对象(flask app使用的)添加日志记录器
    logging.getLogger().addHandler(file_log_handler)


def add_app(config_add):
    '''通过manager 传参,传入的是对象!,对象在setting 之中,对象属性来进行添加属性!
        两次连接redis 一次连接是为了供视图使用,一次是为了存储session的值
    '''
    app = Flask(__name__)
    # 启用log记录
    log_set_up(config_add)
    app.config.from_object(config_add)
    # 初始化对象对象!相当于db = SQLAlchemy(app)
    db.init_app(app)

    ''' redis 操作连接 '''
    global redis_store
    # 连接redis,返回对象供视图使用!
    redis_store = redis.StrictRedis(host=config_add.REDIS_POST, port=config_add.REDIS_PORT)
    '''蓝图,用来实现地址寻找的!'''
    from Flask_.templates.index import index_bure
    app.register_blueprint(index_bure)

    '''开启跨站请求伪造保护!'''
    CSRFProtect(app)

    '''sessin 存储到redis 之中!'''
    redis.StrictRedis(host=config_add.REDIS_POST, port=config_add.REDIS_PORT)
    Session(app)
    return app
View Code
4,视图文件夹之下的__init__
1),创建蓝图对象!
2),导入子模块
3),每个子模块都要进行注册!
from flask import Blueprint
#创建蓝图对象!
index_bure = Blueprint('index', __name__)
#导入子模块
from . import index
View Code
5,视图模块
1),导入蓝图对象!
2),蓝图对象装饰到视图函数之中去!
from flask import Blueprint
#创建蓝图对象!
index_bure = Blueprint('index', __name__)
#导入子模块
from . import index
View Code

 

转载于:https://www.cnblogs.com/shi-qi/articles/9090217.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值