Приложение Flask неправильно использует настройки файла конфигурации - PullRequest
0 голосов
/ 22 сентября 2018

Я следую инструкциям здесь пытаюсь создать файл config.py для настроек моего приложения фляги, но он не работает.

from flask import Flask

# creates the application
def create_app():

    app = Flask(__name__)
    app.config.from_object('instance.config.DevelopmentConfig')

    # home
    @app.route('/')
    def home():
        return str(app.config['DEBUG']) # displays 'False'
        # return str(app.config['SECRET_KEY']) -- displays 'dev'

    return app

мой instance/config.py файл

class DevelopmentConfig(object):
    ENV = 'development'
    DEBUG = True
    SECRET_KEY = 'dev'

Когда я делаю flask run, он запускает сервер в рабочем состоянии с отключенной отладкой.Я не использую export FLASK_ENV, потому что у меня сложилось впечатление, что он не нужен, если у вас есть файл config.py.

Мое предположение неверно?Почему правильно записывается app.config['SECRET_KEY'], а не режим DEBUG?

Ответы [ 2 ]

0 голосов
/ 20 июля 2019

Решение, которое я использую, заключается в установке переменной os.environ['FLASK_ENV'] в моем коде.

from flask import Flask

# creates the application
def create_app():

    app = Flask(__name__)
    app.config.from_object('instance.config.DevelopmentConfig')

    # home
    @app.route('/')
    def home():
        return str(app.config['DEBUG']) # displays 'False'
        # return str(app.config['SECRET_KEY']) -- displays 'dev'

    return app

мой instance/config.py файл

import os

class DevelopmentConfig(object):
    ENV = 'development'
    DEBUG = True
    SECRET_KEY = 'dev'
# file: commands.py
import os

import click
from click import pass_context
from flask.cli import with_appcontext, run_command

from flask import current_app

@click.command('serve', context_settings={"ignore_unknown_options": True})
@with_appcontext
@click.argument('args', nargs=-1)
def serve(args):
    """Alias for 'flask run'."""
    os.environ['FLASK_ENV'] = current_app.config['ENV']
    ctx = run_command.make_context('serve', list(args))
    run_command.invoke(ctx)
# file: wsgi.py
# +++++++++++ FLASK +++++++++++
# This file lets you run 'flask' commands (e.g. flask routes)

# noinspection PyUnresolvedReferences
from app import app as application  # noqa

Теперь flask serve ведет себя так, как я ожидал flask run, чтобы работать.Я считаю это ошибкой колбы.

0 голосов
/ 22 сентября 2018

У меня была такая же проблема несколько недель назад.Я решил свою проблему следующим образом:

from flask import Flask
from instance.config import DevelopmentConfig # import config object


# creates the application
def create_app():

    app = Flask(__name__)
    app.config.from_object(DevelopmentConfig)

    # code ...

    return app  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...