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