Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Flask app config采用其默认值,而不是my config.py_Python_Flask_Config - Fatal编程技术网

Python Flask app config采用其默认值,而不是my config.py

Python Flask app config采用其默认值,而不是my config.py,python,flask,config,Python,Flask,Config,这是我的烧瓶应用程序的config.py import os class DefaultConfig(object): PROJECT = 'SEARCH & FILTER ' PROJECT_ROOT = os.path.abspath(os.path.dirname(os.path.dirname(__file__$ DEBUG = True TESTING = False SECRET_KEY =

这是我的烧瓶应用程序的config.py

import os

class DefaultConfig(object):

        PROJECT = 'SEARCH & FILTER '
        PROJECT_ROOT = os.path.abspath(os.path.dirname(os.path.dirname(__file__$
        DEBUG = True
        TESTING = False
        SECRET_KEY = 'secret key'
        SERVER_NAME = 'https://s.herokuapp.com/'
        PREFERRED_URL_SCHEME = 'https'
        SQLALCHEMY_DATABASE_URI = os.environ['DATABASE_URL']
        SQLALCHEMY_TRACK_MODIFICATIONS = True
        SQLALCHEMY_ECHO = True
        NGROK_DOMAIN = 'https://s.herokuapp.com/'
        SHOPIFY_API_KEY = '*********************'
        SHOPIFY_SHARED_SECRET = '************************'
当我运行我的应用程序并尝试打印应用程序的配置详细信息时

print current_app.config.get('SHOPIFY_API_KEY')
它一无所获 所以,我试着打印

print current_app.config
已打印以下详细信息

<Config {'SESSION_REFRESH_EACH_REQUEST': True, 'USE_X_SENDFILE': False, 'PREFERRED_URL_SCHEME': 'http', 'ENV': 'production', 'DEBUG': False, 'MAX_CONTENT_LENGTH': None, 'TESTING': False, 'SEND_FILE_MAX_AGE_DEFAULT': datetime.timedelta(0, 43200), 'TRAP_BAD_REQUEST_ERRORS': None, 'SESSION_COOKIE_NAME': 'session', 'SECRET_KEY': None, 'APPLICATION_ROOT': '/', 'EXPLAIN_TEMPLATE_LOADING': False, 'SESSION_COOKIE_SECURE': False, 'TRAP_HTTP_EXCEPTIONS': False, 'JSONIFY_MIMETYPE': 'application/json', 'PROPAGATE_EXCEPTIONS': None, 'JSON_SORT_KEYS': True, 'MAX_COOKIE_SIZE': 4093, 'SESSION_COOKIE_DOMAIN': None, 'SESSION_COOKIE_SAMESITE': None, 'PRESERVE_CONTEXT_ON_EXCEPTION': None, 'JSONIFY_PRETTYPRINT_REGULAR': False, 'SESSION_COOKIE_HTTPONLY': True, 'JSON_AS_ASCII': True, 'PERMANENT_SESSION_LIFETIME': datetime.timedelta(31), 'SERVER_NAME': None, 'TEMPLATES_AUTO_RELOAD': None, 'SESSION_COOKIE_PATH': None}>

为什么我的给定凭据尚未设置为我的应用程序


提前谢谢

如果要使用
从_pyfile
加载配置,请使用以下两个文件:

app.py

from flask import Flask
app = Flask(__name__)
app.config.from_pyfile('app_config.py')
print(app.config['FOO'])
from flask import Flask
app = Flask(__name__)
app.config.from_object('app_config.DefaultConfig')
print(app.config['FOO'])
app_config.py

import os

class DefaultConfig(object):

        PROJECT = 'SEARCH & FILTER '
        PROJECT_ROOT = os.path.abspath(os.path.dirname(os.path.dirname(__file__$
        DEBUG = True
        TESTING = False
        SECRET_KEY = 'secret key'
        SERVER_NAME = 'https://s.herokuapp.com/'
        PREFERRED_URL_SCHEME = 'https'
        SQLALCHEMY_DATABASE_URI = os.environ['DATABASE_URL']
        SQLALCHEMY_TRACK_MODIFICATIONS = True
        SQLALCHEMY_ECHO = True
        NGROK_DOMAIN = 'https://s.herokuapp.com/'
        SHOPIFY_API_KEY = '*********************'
        SHOPIFY_SHARED_SECRET = '************************'
FOO = 'bar'
class DefaultConfig:
    FOO = 'bar'
如果要在配置中使用类,请改为使用
from_object
加载配置:

app.py

from flask import Flask
app = Flask(__name__)
app.config.from_pyfile('app_config.py')
print(app.config['FOO'])
from flask import Flask
app = Flask(__name__)
app.config.from_object('app_config.DefaultConfig')
print(app.config['FOO'])
app_config.py

import os

class DefaultConfig(object):

        PROJECT = 'SEARCH & FILTER '
        PROJECT_ROOT = os.path.abspath(os.path.dirname(os.path.dirname(__file__$
        DEBUG = True
        TESTING = False
        SECRET_KEY = 'secret key'
        SERVER_NAME = 'https://s.herokuapp.com/'
        PREFERRED_URL_SCHEME = 'https'
        SQLALCHEMY_DATABASE_URI = os.environ['DATABASE_URL']
        SQLALCHEMY_TRACK_MODIFICATIONS = True
        SQLALCHEMY_ECHO = True
        NGROK_DOMAIN = 'https://s.herokuapp.com/'
        SHOPIFY_API_KEY = '*********************'
        SHOPIFY_SHARED_SECRET = '************************'
FOO = 'bar'
class DefaultConfig:
    FOO = 'bar'

如果项目的布局如下所示:

helloshopify/
    - __init__.py
    - config_app.py
from .config import DefaultConfig

#...
app = Flask(__name__)
app.config.from_object(DefaultConfig)
您在
\uuuu init\uuuuuuu.py
中加载
config\u app.py
,然后只需传递绝对路径:

app.config.from_pyfile('config_app.py')

您应该导入它并从对象中使用。大概是这样的:

helloshopify/
    - __init__.py
    - config_app.py
from .config import DefaultConfig

#...
app = Flask(__name__)
app.config.from_object(DefaultConfig)

如何将配置加载到应用程序中?使用以下代码app.config.from_pyfile('helloshopify/config_app.py')我只想将我的应用程序实例添加到您的答案中,您可以在那里查看我如何加载配置。其他一切都由@Joost解释