flask结构

来源:互联网 发布:caffe slice layer 编辑:程序博客网 时间:2024/06/14 06:37

项目结构

|- myflask

    |- app/

        |- templates/

        |- static/

        |- main/

            |- __init__.py

            |- errors.py

            |- forms.py

            |- views.py

        |- __init__.py

        |- email.py

        |- models.py

    |- migrations/

    |- tests/

        |- __init__.py

        |- test*.py

    |- requirements.txt

    |- config.py

    |- manager.py

程序配置:config.py

为了使开发、测试、和生产互不影响,所以设置不同的配置环境。

import osbasedir = os.path.abspath(os.path.dirname(__file__))class Config:# 设置一个基类,包含通用配置,后面的类继承该类    SECRET_KEY = os.environ.get('SECRET_KEY') or 'hard to guess string'    SQLALCHEMY_COMMIT_ON_TEARDOWN = True    FLASK_MAIL_SUBJET_PREFIX = '[Flasky]'    FLASKY_MAIL_SENDER = 'Flasky Admin <flasky@example.com>'    FLASKY_ADMIN = os.environ.get('FLASKY_ADMIN')    @staticmethod#定义一个静态方法,参数是程序实例,可以执行对当前环境配置初始化    def init_app(app):        passclass DevelopmentConfig(Config):    DEBUG = True    MAIL_SERVER = 'smtp.googlemail.com'    MAIL_PORT = 587    MAIL_USE_TLS = True    MAIL_USERNAME = os.environ.get('MAIL_USERNAME')    MAIL_PASSWORD = os.environ.get('MAIL_PASSWORD')    SQLALCHEMY_DATABASE_URI = os.environ.get('DEV_DATABASE_URL') or \        'sqlite:///' + os.path.join(basedir, 'data-dev.sqlite')class TestingConfig(Config):    TESTING = True    SQLALCHEMY_DATABASE_URI = os.environ.get('TEST_DATABASE_URL') or \        'sqlite:///' + os.path.join(basedir, 'data-test.sqlite')class ProductionConfig(Config):    SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL') or \        'sqlite:///' + os.path.join(basedir, 'data.sqlite')config = {    'development': DevelopmentConfig,    'testing': TestingConfig,    'production': ProductionConfig,    'default': DevelopmentConfig}
后面的3个子类都继承于Config类,每个都使用了不同的数据库。

最后设置一个字典config,注册不同的配置环境。

os.environ.get()表示从环境变量中获取数值。

windows设定环境变量:set SECRET_KEY=<####>

Linux或Mac设定环境变量: export SECRET_KEY=<####>







0 0
原创粉丝点击