Сообщить об ошибке.

Проверка доступности контекстов запроса/приложения во Flask

В материале рассматриваются функции фреймворка flask.has_request_context() и flask.has_app_context(), которые проверяют доступность контекста запроса и контекста приложения соответственно.

Содержание:


flask.has_request_context():

Функцию flask.has_request_context() в основном используют, если есть код, который проверяет доступность контекста запроса перед его использованием.

Например, перед использованием информации о запросе, лучше проверять его наличие, что бы не получать исключение если он вдруг недоступен.

from flask import request, has_request_context

class User(db.Model):

    def __init__(self, username, remote_addr=None):
        self.username = username
        # проверка наличия контекста запроса
        if has_request_context():
            remote_addr = request.remote_addr
        self.remote_addr = remote_addr

В качестве альтернативы, также можно просто проверить любой из связанных с контекстом объектов (например, flask.request или flask.g) на истинность:

from flask import request

class User(db.Model):

    def __init__(self, username, remote_addr=None):
        self.username = username
        # проверка истинности контекста запроса
        if request:
            remote_addr = request.remote_addr
        self.remote_addr = remote_addr

flask.has_app_context():

Функция flask.has_app_context() работает также как flask.has_request_context(), но для контекста приложения.

В качестве альтернативы, можно выполнить простую проверку на истинность объекта flask.current_app(), как показано во втором примере с контекстом запроса.