Как использовать приложение входа в колбу, он не может импортировать имя регистратора - PullRequest
0 голосов
/ 25 февраля 2019

Я хочу превратить проект колбы в большую структуру проекта, поэтому я нашел пример проекта, подобный следующему

 ~/LargeApp
|-- run.py
|-- config.py
|__ /env             # Virtual Environment
|__ /app             # Our Application Module
     |-- __init__.py
     |-- /module_one
         |-- __init__.py
         |-- views.py
         |-- models.py                
     |__ /templates
         |__ /module_one
             |-- hello.html
     |__ /static
     |__ ..
     |__ .
|__ ..
|__ .

Я пишу функцию create_app в /app/init.py

def create_app():
    app = Flask(__name__)
    app.config.from_object(os.environ['APP_SETTINGS'])

    app.logger = my_get_logger_function() # this function set log level, and add handler to logger and return logger
    db.init_app(app)

    from .module_one.views import mod as module_one_blueprint
    app.register_blueprint(module_one_blueprint)

    return app

и я хочу использовать logger в моем /app/module_one/views.py, ниже мой файл views.py

from app import logger
...
@mod.route('/test/', methods=['GET'])
def test():
    logger.info('test')

, но когда я бегу, я получаю сообщение "ImportError: невозможно импортировать имя 'logger"

Я знаю, это потому, что я вызываю logger в views.py перед созданием приложения

, но я действительно не знаю, как это исправить икак мне разработать свой проект

1 Ответ

0 голосов
/ 25 февраля 2019

На самом деле ошибка связана с тем, что вы не определили имя logger в своем модуле app.Если вы хотите использовать регистратор приложений, вам следует импортировать current_app из flask, который является экземпляром вашего приложения, следующим образом:

from flask import current_app

Затем, по вашему мнению, вы можете использовать регистратор:

current_app.logger.info('Your message')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...