import os import random import string import dotenv import logging from datetime import timedelta from dotenv import load_dotenv if os.path.exists('.env'): load_dotenv('.env', verbose=True) class BaseConfig: ''' 基础配置 ''' # UPLOAD_FOLDER = r'./uploads' # app = Flask(__name__) # app.secret_key = 'secret!' # app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER # werkzeug_logger = rel_log.getLogger('werkzeug') # werkzeug_logger.setLevel(rel_log.ERROR) # # 解决缓存刷新问题 # app.config['SEND_FILE_MAX_AGE_DEFAULT'] = timedelta(seconds=1) SUPERADMIN = 'admin' ASSETS_ROOT = os.getenv('ASSETS_ROOT', '/static/assets') STATIC_URL = '/static/' SECRET_KEY = os.getenv('SECRET_KEY', None) if not SECRET_KEY: SECRET_KEY = ''.join(random.choice(string.ascii_lowercase) for i in range(32)) # base PROJECT_NAME = 'flask_blog' # 当前 config.py 文件目录 DEBUG = False # 当前文件所在目录的绝对路径 /apps BASE_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), "..")) BASE_URL = 'http://' ADMIN_EMAILS = "" # 分页 POST_PER_PAGE = 8 # 每页文章数 COMMENT_PER_PAGE = 10 # 每页评论数 LANGUAGE_CODE = 'zh-hans' TIME_ZONE = 'PRC' UP_DIR = os.path.join(os.path.abspath( os.path.dirname(__file__)), "app/static/uploads/") # 文件上传路径 FC_DIR = os.path.join(os.path.abspath(os.path.dirname( __file__)), "app/static/uploads/users/") # 用户头像上传路径 UPLOADED_PHOTOS_DEST = 'static/upload' UPLOADED_FILES_ALLOW = ['gif', 'jpg'] UPLOADS_AUTOSERVE = True JSON_AS_ASCII = False # db SQLALCHEMY_TRACK_MODIFICATIONS = False DB_ENGINE = os.getenv('DB_ENGINE', None) DB_USERNAME = os.getenv('DB_USERNAME', None) DB_PASS = os.getenv('DB_PASS', None) DB_HOST = os.getenv('DB_HOST', None) DB_PORT = os.getenv('DB_PORT', None) DB_NAME = os.getenv('DB_NAME', None) USE_SQLITE = True # redis REDIS_HOST = os.getenv('REDIS_HOST', 'localhost') REDIS_PORT = os.getenv('REDIS_PORT', 6379) REDIS_DB = os.getenv('REDIS_DB', 0) REDIS_PASSWORD = os.getenv('REDIS_PASSWORD', None) CELERY_BROKER_URL = 'redis://{}:{}/{}'.format( REDIS_HOST, REDIS_PORT, REDIS_DB) # mail MAIL_SERVER = os.getenv('MAIL_SERVER', 'smtp.qq.com') MAIL_PORT = os.getenv('MAIL_PORT', 465) MAIL_USE_TLS = False MAIL_USE_SSL = True MAIL_DEBUG = True MAIL_USERNAME = os.getenv('MAIL_USERNAME', None) MAIL_PASSWORD = os.getenv('MAIL_PASSWORD', None) # 生成的授权码 MAIL_DEFAULT_SENDER = MAIL_USERNAME # token配置 TIMEOUT_TOKEN = 10 * 24 * 60 * 60 TIMEOUT_EMAIL = 10 * 60 PERMANENT_SESSION_LIFETIME = timedelta(hours=2) # log LOG_LEVEL = logging.WARN # 插件配置,填写插件的文件名名称,默认不启用插件。 PLUGIN_ENABLE_FOLDERS = [] # 七牛云 QINIU_ACCESS_KEY = os.getenv('QINIU_ACCESS_KEY', None) QINIU_SECRET_KEY = os.getenv('QINIU_SECRET_KEY', None) QINIU_BUCKET_NAME = os.getenv('QINIU_BUCKET_NAME', None) # github GITHUB_CLIENT_ID = os.getenv('GITHUB_CLIENT_ID', None) GITHUB_CLIENT_SECRET = os.getenv('GITHUB_CLIENT_SECRET', None) if GITHUB_CLIENT_ID and GITHUB_CLIENT_SECRET: SOCIAL_AUTH_GITHUB = True @staticmethod def init_app(app): pass class DevelopmentConfig(BaseConfig): ''' 开发环境配置, 开启调试模式, 使用 sqlite ''' DEBUG = True SQLALCHEMY_TRACK_MODIFICATIONS = True # SQLALCHEMY_ECHO = True # SQLALCHEMY_COMMIT_ON_TEARDOWN = True SQLALCHEMY_DATABASE_URI = 'sqlite:///../flask-note.sqlite3.db' class TestingConfig(BaseConfig): DEBUG = True class ProductionConfig(BaseConfig): DEBUG = False # SQLALCHEMY_DATABASE_URI = 'sqlite:///db.sqlite3' SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://lyq:123456@ok.yoqi.me:13306/travel?charset=utf8' # Security SESSION_COOKIE_HTTPONLY = True REMEMBER_COOKIE_HTTPONLY = True REMEMBER_COOKIE_DURATION = 3600 config = { 'default': DevelopmentConfig, 'development': DevelopmentConfig, 'production': ProductionConfig }