Flask окружение игнорируется в config.py - PullRequest
0 голосов
/ 19 июня 2020

Я пытаюсь создать базовое приложение c flask для учебных целей. все идет гладко, но есть проблема, которую я не понимаю. в моем файле run.py у меня есть следующая строка:

app.config.from_object('config.prodConfig')

Это загружает config.py в root, который содержит следующий код:

class Config:
SECRET_KEY = '1234567890'
STATIC_FOLDER = 'static'
TEMPLATES_FOLDER = 'templates'

class devConfig(Config):
FLASK_ENV = 'development'
DEBUG = True
TESTING = True

class prodConfig(Config):
FLASK_ENV = 'production'
DEBUG = False
TESTING = False

мое понимание в том, что Config содержит несколько "стандартных" настроек. devConfig и prodConfig основаны на Config, поэтому всегда будут содержать эти значения, но у каждого будет свое значение env, debug и testing. хотя я не получаю никаких ошибок, и отладка, кажется, активирована, когда я запускаю свой экземпляр Flask, он сообщает мне, что я работаю в производственной среде, независимо от того, что я делаю.

 * Serving Flask app "run" (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: on
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!

I Меня не интересует установка переменной env в терминале / среде, я знаю, как это сделать. меня интересует, почему это не работает. в конце концов, директива FLASK_ENV допустима, и она должна загружаться по указанию.

Что я делаю не так?

1 Ответ

0 голосов
/ 19 июня 2020

Имея в виду комментарий Чейза, о том, что не нужно устанавливать FLASK_ENV в приложении. Передайте dict своих конфигураций из config.py и выберите соответствующую конфигурацию на основе FLASK_ENV, установленного вне вашего приложения, например, с файлом .env.

config.py

class BaseConfig:
    ...

class DevConfig(BaseConfig):
    ...

class ProdConfig(BaseConfig):
    ...

configs = {"development": DevConfig, "production": ProdConfig}

app.py

import os
from flask import FLask
from config import configs
...
app.config.from_object(configs[os.environ.get("FLASK_ENV", "development")])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...