config.py 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. import os
  2. import random
  3. import string
  4. import logging
  5. from datetime import timedelta
  6. from dotenv import load_dotenv
  7. if os.path.exists('.env'):
  8. load_dotenv('.env', verbose=True)
  9. class BaseConfig:
  10. ''' 基础配置 '''
  11. SUPERADMIN = 'admin'
  12. ASSETS_ROOT = os.getenv('ASSETS_ROOT', '/static/assets')
  13. STATIC_URL = '/static/'
  14. SECRET_KEY = os.getenv('SECRET_KEY', None)
  15. if not SECRET_KEY:
  16. SECRET_KEY = ''.join(random.choice(string.ascii_lowercase)
  17. for i in range(32))
  18. # app.secret_key = 'secret!'
  19. app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
  20. # werkzeug_logger = rel_log.getLogger('werkzeug')
  21. # werkzeug_logger.setLevel(rel_log.ERROR)
  22. # # 解决缓存刷新问题
  23. # app.config['SEND_FILE_MAX_AGE_DEFAULT'] = timedelta(seconds=1)
  24. # base
  25. PROJECT_NAME = 'flask_blog'
  26. # 当前 config.py 文件目录
  27. DEBUG = False
  28. # 当前文件所在目录的绝对路径 /apps
  29. BASE_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
  30. BASE_URL = 'http://'
  31. ADMIN_EMAILS = ""
  32. # 分页
  33. POST_PER_PAGE = 8 # 每页文章数
  34. COMMENT_PER_PAGE = 10 # 每页评论数
  35. LANGUAGE_CODE = 'zh-hans'
  36. TIME_ZONE = 'PRC'
  37. UP_DIR = os.path.join(os.path.abspath(
  38. os.path.dirname(__file__)), "app/static/uploads/") # 文件上传路径
  39. FC_DIR = os.path.join(os.path.abspath(os.path.dirname(
  40. __file__)), "app/static/uploads/users/") # 用户头像上传路径
  41. UPLOADED_PHOTOS_DEST = 'static/upload'
  42. UPLOADED_FILES_ALLOW = ['gif', 'jpg']
  43. UPLOADS_AUTOSERVE = True
  44. JSON_AS_ASCII = False
  45. # db
  46. SQLALCHEMY_TRACK_MODIFICATIONS = False
  47. DB_ENGINE = os.getenv('DB_ENGINE' , None)
  48. DB_USERNAME = os.getenv('DB_USERNAME' , None)
  49. DB_PASS = os.getenv('DB_PASS' , None)
  50. DB_HOST = os.getenv('DB_HOST' , None)
  51. DB_PORT = os.getenv('DB_PORT' , None)
  52. DB_NAME = os.getenv('DB_NAME' , None)
  53. USE_SQLITE = True
  54. # redis
  55. REDIS_HOST = os.getenv('REDIS_HOST', 'localhost')
  56. REDIS_PORT = os.getenv('REDIS_PORT', 6379)
  57. REDIS_DB = os.getenv('REDIS_DB', 0)
  58. REDIS_PASSWORD = os.getenv('REDIS_PASSWORD', None)
  59. CELERY_BROKER_URL = 'redis://{}:{}/{}'.format(REDIS_HOST, REDIS_PORT, REDIS_DB)
  60. # mail
  61. MAIL_SERVER = os.getenv('MAIL_SERVER', 'smtp.qq.com')
  62. MAIL_PORT = os.getenv('MAIL_PORT', 465)
  63. MAIL_USE_TLS = False
  64. MAIL_USE_SSL = True
  65. MAIL_DEBUG = True
  66. MAIL_USERNAME = os.getenv('MAIL_USERNAME', None)
  67. MAIL_PASSWORD = os.getenv('MAIL_PASSWORD',None) # 生成的授权码
  68. MAIL_DEFAULT_SENDER = MAIL_USERNAME
  69. # token配置
  70. TIMEOUT_TOKEN = 10 * 24 * 60 * 60
  71. TIMEOUT_EMAIL = 10 * 60
  72. PERMANENT_SESSION_LIFETIME= timedelta(hours=2)
  73. # log
  74. LOG_LEVEL = logging.WARN
  75. # 插件配置,填写插件的文件名名称,默认不启用插件。
  76. PLUGIN_ENABLE_FOLDERS = []
  77. # 七牛云
  78. QINIU_ACCESS_KEY = os.getenv('QINIU_ACCESS_KEY', None)
  79. QINIU_SECRET_KEY = os.getenv('QINIU_SECRET_KEY', None)
  80. QINIU_BUCKET_NAME = os.getenv('QINIU_BUCKET_NAME', None)
  81. # github
  82. GITHUB_CLIENT_ID = os.getenv('GITHUB_CLIENT_ID' , None)
  83. GITHUB_CLIENT_SECRET = os.getenv('GITHUB_CLIENT_SECRET' , None)
  84. if GITHUB_CLIENT_ID and GITHUB_CLIENT_SECRET:
  85. SOCIAL_AUTH_GITHUB = True
  86. @staticmethod
  87. def init_app(app):
  88. pass
  89. class DevelopmentConfig(BaseConfig):
  90. ''' 开发环境配置, 开启调试模式, 使用 sqlite '''
  91. DEBUG = True
  92. SQLALCHEMY_TRACK_MODIFICATIONS = True
  93. # SQLALCHEMY_ECHO = True
  94. # SQLALCHEMY_COMMIT_ON_TEARDOWN = True
  95. SQLALCHEMY_DATABASE_URI = 'sqlite:///../flask-note.sqlite3.db'
  96. class TestingConfig(BaseConfig):
  97. DEBUG = True
  98. class ProductionConfig(BaseConfig):
  99. DEBUG = False
  100. # SQLALCHEMY_DATABASE_URI = 'sqlite:///db.sqlite3'
  101. SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://lyq:123456@ok.yoqi.me:13306/travel?charset=utf8'
  102. # Security
  103. SESSION_COOKIE_HTTPONLY = True
  104. REMEMBER_COOKIE_HTTPONLY = True
  105. REMEMBER_COOKIE_DURATION = 3600
  106. config = {
  107. 'default': DevelopmentConfig,
  108. 'development': DevelopmentConfig, # 开发环境配置, 开启调试模式, 使用 sqlite
  109. 'production': ProductionConfig
  110. }