flask 1:flask项目入口文件与文件的拆分

入口文件完整体:
注:在运行的时候,需要将PC上的Redis-server打开,要不然就会报错

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import redis
from flask_session import Session
from flask_wtf import CSRFProtect

app = Flask(__name__)


class Config(object):
    """配置信息"""

    SECRET_KEY = 'ASDAXCWE5ERTFG%%DAS34'
    # 这个值是什么无所谓,是一种更安全的加密
    USERNAME = 'root'
    PASSWORD = 'root'
    HOSTNAME = '127.0.0.1'
    PORT     = 3306
    DATEBASE = 'home'

    # redis配置
    REDIS_HOST = '127.0.0.1'
    REDIS_PORT = 6379

    # flask-session
    SESSION_TYPE = 'redis'

    SESSION_REDIS = redis.Redis(host=REDIS_HOST, port=REDIS_PORT)
    SESSION_USE_SIGNER = True   #是否对会话cookie_sid进行签名,如果设置为True,则必须设置secret_key,
    PERMANENT_SESSION_LIFETIME = 8640   # 单位是秒  这是一天的时间
    # flask-session 配置:https://flask-session.readthedocs.io/en/latest/

    # 数据库
    DB_URL = 'mysql+pymysql://{}:{}@{}:{}/{}'.format(USERNAME, PASSWORD, HOSTNAME, PORT, DATEBASE)

app.config.from_object(Config)

#app.config.from_object()
# 数据库连接
db = SQLAlchemy(app)

# 创建Redis
# redis缓存  比如短信验证码
redis_store = redis.Redis(host=Config.REDIS_HOST, port=Config.REDIS_PORT)
# redis_2 = redis.StrictRedis()
# session
Session(app)

# post请求  wtf  csrf
CSRFProtect(app)


@app.route('/')
def index():
    return "index page"


if __name__ == '__main__':
    app.run()
  • 知识点2:配置文件与配置文件内容加载:通过字典的方式加载字典里的相关类。
    config.py
import redis


class Config(object):
    """配置信息"""

    SECRET_KEY = 'ASDAXCWE5ERTFG%%DAS34'
    # 这个是哪里来的?
    USERNAME = 'root'
    PASSWORD = 'root'
    HOSTNAME = '127.0.0.1'
    PORT     = 3306
    DATEBASE = 'home'

    # redis配置
    REDIS_HOST = '127.0.0.1'
    REDIS_PORT = 6379

    # flask-session
    SESSION_TYPE = 'redis'

    SESSION_REDIS = redis.Redis(host=REDIS_HOST, port=REDIS_PORT)
    SESSION_USE_SIGNER = True
    PERMANENT_SESSION_LIFETIME = 8640   # 单位是秒

    # 数据库
    SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://{}:{}@{}:{}/{}'.format(USERNAME, PASSWORD, HOSTNAME, PORT, DATEBASE)
    SQLALCHEMY_TRACK_MODIFICATIONS = False
    # 如果开启的话会增加大量的开销


class DevConfig(Config):
    """开发环境"""
    DEBUG = True
    HOSTNAME = '127.0.0.2'


class ProConfig(Config):
    """生产环境"""
    DEBUG = False
    HOSTNAME = '192.168.1.138'


config_map = {
    'dev': DevConfig,
    'pro': ProConfig
}

加载不同的配置类方式:
通过字典的get方法,可以获取到对应的键值并且赋值,于是就可以获取到了。

from flask import Flask
from config import config_map

def create_app(config_name):
    #setup_log()
    app = Flask(__name__)

    config_class = config_map.get(config_name)
    # 字典的get方法,可以通过get方法获取字典中对应的class,这样的方法真的厉害了啊!
    print(config_class.HOSTNAME)

create_app('dev')
create_app('pro')
  • 拆分程序与各个文件夹:
    api_1_0文件夹:蓝图
    utils:自己完成的功能块
    libs:第三方工具
    static:静态资源文件,html js 等等
    config文件:接口配置
    logs:日志文件
    manager:入口文件

在外部新建一个总的文件夹把和入口相关不大的装起来,也就是和业务逻辑相关的都放进去
新建一个lghome文件夹
可以将目录变成包,通过添加一个__init__.py把目录变成包,此时就可以被import了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值