Spec-Zone.ru › Flask 2.0

API

В этой части документации описаны все интерфейсы Flask. Там, где Flask зависит от внешних библиотек, мы описываем наиболее важные элементы здесь и предоставляем ссылки на каноническую документацию.

Объект приложения

class flask.Flask(import_name, static_url_path=None, static_folder='static', static_host=None, host_matching=False, subdomain_matching=False, template_folder='templates', instance_path=None, instance_relative_config=False, root_path=None)

Объект flask реализует WSGI-приложение и служит центральным объектом. Он принимает имя модуля или пакета приложения. После создания он будет служить центральным реестром для функций представлений, правил URL, конфигурации шаблонов и многое другое.

Имя пакета используется для разрешения ресурсов изнутри пакета или папки, в которой содержится модуль, в зависимости от того, является ли параметр пакета фактическим пакетом Python (папкой с файлом __init__.py внутри) или стандартным модулем (просто файл .py).

Дополнительную информацию о загрузке ресурсов см. в open_resource().

Обычно вы создаёте экземпляр Flask в главном модуле или в файле __init__.py вашего пакета, как показано ниже:

from flask import Flask
app = Flask(__name__)

О первом параметре

Идея первого параметра — дать Flask представление о том, что принадлежит вашему приложению. Это имя используется для поиска ресурсов в файловой системе, может использоваться расширениями для улучшения отладочной информации и многого другого.

Поэтому важно, что вы предоставляете. Если вы используете один модуль, __name__ — всегда правильное значение. Однако, если вы используете пакет, обычно рекомендуется жестко закодировать имя вашего пакета.

Например, если ваше приложение определено в yourapplication/app.py вы должны создать его с одной из двух версий ниже:

app = Flask('yourapplication')
app = Flask(__name__.split('.')[0])

Почему так? Приложение будет работать даже с __name__, благодаря тому, как ищутся ресурсы. Однако это сделает отладку более сложной. Некоторые расширения могут делать предположения, основанные на имени импорта вашего приложения. Например, расширение Flask-SQLAlchemy будет искать код в вашем приложении, который вызвал запрос SQL в отладочном режиме. Если имя импорта не настроено должным образом, эта отладочная информация теряется. (Например, он будет собирать только запросы SQL в yourapplication.app и не в yourapplication.views.frontend).

Журнал изменений

В версии 1.0: Были добавлены параметры host_matching и static_host.

В версии 1.0: Был добавлен параметр subdomain_matching. Сопоставление по поддоменам теперь необходимо включать вручную. Установка SERVER_NAME не подразумевает его включения.

В версии 0.11: Был добавлен параметр root_path.

В версии 0.8: Были добавлены параметры instance_path и instance_relative_config.

В версии 0.7: Были добавлены параметры static_url_path, static_folder, и template_folder.

Параметры
  • import_name (str) – имя пакета приложения
  • static_url_path (Optional[str]) – может использоваться для задания другого пути к статическим файлам в веб-приложении. По умолчанию используется имя папки static_folder.
  • static_folder (Optional[str]) – папка со статическими файлами, которые будут обслуживаться по адресу static_url_path. Относительно корня приложения root_path или абсолютный путь. По умолчанию 'static'.
  • static_host (Optional[str]) – хост, используемый при добавлении статического маршрута. По умолчанию None. Необходим при использовании host_matching=True с настроенным static_folder.
  • host_matching (bool) – установить атрибут url_map.host_matching. По умолчанию False.
  • subdomain_matching (bool) – рассматривать поддомен относительно SERVER_NAME при сопоставлении маршрутов. По умолчанию False.
  • template_folder (Optional[str]) – папка, содержащая шаблоны, которые должны использоваться приложением. По умолчанию папка 'templates' в корне приложения.
  • instance_path (Optional[str]) – альтернативный путь к папке приложения. По умолчанию предполагается, что папка 'instance' рядом с пакетом или модулем — это путь к папке приложения.
  • instance_relative_config (bool) – если установлено в True, относительные имена файлов для загрузки конфигурации предполагаются относительными к пути к папке приложения, а не к корню приложения.
  • root_path (Optional[str]) – путь к корню файлов приложения. Это следует устанавливать вручную только в тех случаях, когда его нельзя определить автоматически, например, для пространств имён пакетов.
add_template_filter(f, name=None)

Регистрация пользовательского фильтра шаблонов. Работает точно так же, как декоратор template_filter().

Параметры
  • name (Optional[str]) – необязательное имя фильтра, в противном случае будет использовано имя функции.
  • f (Callable[[Any], str]) –
Тип возвращаемого значения

None

add_template_global(f, name=None)

Регистрация пользовательской глобальной функции шаблона. Работает точно так же, как декоратор template_global().

Журнал изменений

В версии 0.10.

Параметры
  • name (Optional[str]) – необязательное имя глобальной функции, в противном случае будет использовано имя функции.
  • f (Callable[[], Any]) –
Тип возвращаемого значения

None

add_template_test(f, name=None)

Регистрация пользовательского теста шаблона. Работает точно так же, как декоратор template_test().

Журнал изменений

В версии 0.10.

Параметры
  • name (Optional[str]) – необязательное имя теста, в противном случае будет использовано имя функции.
  • f (Callable[[Any], bool]) –
Тип возвращаемого значения

None

add_url_rule(rule, endpoint=None, view_func=None, provide_automatic_options=None, **options)

Регистрация правила для маршрутизации входящих запросов и построения URL. Декоратор route() является сокращением для вызова с аргументом view_func. Они эквивалентны:

@app.route("/")
def index():
    ...
def index():
    ...

app.add_url_rule("/", view_func=index)

См. Регистрации URL-маршрутов.

Имя конечной точки маршрута по умолчанию соответствует имени функции представления, если параметр endpoint не передан. Будет выброшено исключение, если функция уже зарегистрирована для конечной точки.

Параметр methods по умолчанию равен ["GET"]. HEAD всегда добавляется автоматически, и OPTIONS добавляется автоматически по умолчанию.

Параметр view_func необязателен, но если правило должно участвовать в маршрутизации, имя конечной точки должно быть связано с функцией представления в какой-то момент с помощью декоратора endpoint().

app.add_url_rule("/", endpoint="index")

@app.endpoint("index")
def index():
    ...

Если у view_func есть атрибут required_methods, эти методы добавляются к переданным и автоматическим методам. Если у него есть атрибут provide_automatic_methods, он используется в качестве значения по умолчанию, если параметр не передан.

Параметры
  • rule (str) – Строка правила URL.
  • endpoint (Необязательно[str]) – Имя конечной точки для связи с правилом и функцией представления. Используется при маршрутизации и построении URL. По умолчанию view_func.__name__.
  • view_func (Необязательно[Callable]) – Функция представления, которую следует связать с именем конечной точки.
  • provide_automatic_options (Необязательно[bool]) – Добавить метод OPTIONS и автоматически отвечать на запросы OPTIONS.
  • options (Any) – Дополнительные параметры, передаваемые объекту Rule.
Тип возвращаемого значения

None

after_request(f)

Регистрация функции, которая выполняется после каждого запроса к этому объекту.

Функция вызывается с объектом ответа и должна вернуть объект ответа. Это позволяет функциям изменять или заменять ответ перед отправкой.

Если функция вызывает исключение, любые оставшиеся функции after_request не будут вызваны. Поэтому это не следует использовать для действий, которые должны быть выполнены, таких как закрытие ресурсов. Используйте teardown_request() для этого.

Параметры

f (Callable[[Response], Response]) –

Тип возвращаемого значения

Callable[[Response], Response]

after_request_funcs: t.Dict[AppOrBlueprintKey, t.List[AfterRequestCallable]]

Структура данных функций, которые вызываются в конце каждого запроса, в формате {scope: [functions]}. Ключ scope — имя плагина, для которого функции активны, или None для всех запросов.

Для регистрации функции используйте декоратор after_request().

Эта структура данных является внутренней. Ее не следует изменять напрямую, и ее формат может быть изменен в любое время.

app_context()

Создание AppContext. Используйте как блок with для помещения контекста, что сделает current_app указывающим на это приложение.

Контекст приложения автоматически помещается RequestContext.push() при обработке запроса и при выполнении команды командной строки. Используйте это для ручного создания контекста вне этих ситуаций.

with app.app_context():
    init_db()

См. Контекст приложения.

Changelog

Новое в версии 0.9.

Тип возвращаемого значения

flask.ctx.AppContext

app_ctx_globals_class

Псевдоним flask.ctx._AppCtxGlobals

async_to_sync(func)

Возвращает функцию синхронизации, которая выполнит функцию корутины.

result = app.async_to_sync(func)(*args, **kwargs)

Переопределите этот метод, чтобы изменить способ преобразования приложения асинхронного кода в синхронно вызываемый.

Новое в версии 2.0.

Параметры

func (Callable[[...], Coroutine]) –

Тип возвращаемого значения

Callable[[…], Any]

auto_find_instance_path()

Попытка найти путь к экземпляру, если он не был передан в конструктор класса приложения. В основном он вычислит путь к папке с именем instance рядом с вашим основным файлом или пакетом.

Changelog

Новое в версии 0.8.

Тип возвращаемого значения

str

before_first_request(f)

Регистрация функции, которая выполняется перед первым запросом к этому экземпляру приложения.

Функция будет вызвана без аргументов, и ее возвращаемое значение игнорируется.

Changelog

Новое в версии 0.8.

Параметры

f (Callable[[], None]) –

Тип возвращаемого значения

Callable[[], None]

before_first_request_funcs: t.List[BeforeRequestCallable]

Список функций, которые будут вызваны в начале первого запроса к этому экземпляру. Для регистрации функции используйте декоратор before_first_request().

Changelog

Новое в версии 0.8.

before_request(f)

Регистрация функции, которая выполняется перед каждым запросом.

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

@app.before_request
def load_user():
    if "user_id" in session:
        g.user = db.session.get(session["user_id"])

Функция вызывается без аргументов. Если она возвращает значение, отличное от None, это значение обрабатывается как возвращаемое значение представления, и дальнейшая обработка запроса прекращается.

Параметры

f (Callable[[], None]) –

Тип возвращаемого значения

Callable[[], None]

before_request_funcs: t.Dict[AppOrBlueprintKey, t.List[BeforeRequestCallable]]

Структура данных функций, которые вызываются в начале каждого запроса, в формате {scope: [functions]}. Ключ scope — имя плагина, для которого функции активны, или None для всех запросов.

Для регистрации функции используйте декоратор before_request().

Эта структура данных является внутренней. Ее не следует изменять напрямую, и ее формат может быть изменен в любое время.

blueprints: t.Dict[str, ‘Blueprint’]

Сопоставление зарегистрированных имен Blueprint с объектами Blueprint. Словарь сохраняет порядок регистрации Blueprint. Blueprints могут быть зарегистрированы несколько раз, этот словарь не отслеживает, сколько раз они были подключены.

Changelog

Добавлено в версии 0.7.

cli

Группа команд Click для регистрации команд CLI для этого объекта. Команды доступны из команды flask после того, как приложение было обнаружено и были зарегистрированы Blueprint.

config

Словарь конфигурации как Config. Он ведет себя точно так же, как обычный словарь, но поддерживает дополнительные методы для загрузки конфигурации из файлов.

config_class

Псевдоним для flask.config.Config

context_processor(f)

Регистрирует функцию обработчика контекста шаблона.

Параметры

f (Callable[[], Dict[str, Any]]) –

Тип возвращаемого значения

Callable[[], Dict[str, Any]]

create_global_jinja_loader()

Создаёт загрузчик для среды Jinja2. Может использоваться для переопределения только загрузчика, сохраняя остальное неизменным. Не рекомендуется переопределять эту функцию. Вместо этого следует переопределить функцию jinja_loader().

Глобальный загрузчик распределяет между загрузчиками приложения и отдельных Blueprint.

Changelog

Добавлено в версии 0.7.

Тип возвращаемого значения

flask.templating.DispatchingJinjaLoader

create_jinja_environment()

Создаёт среду Jinja на основе jinja_options и различных методов приложения, связанных с Jinja. Изменение jinja_options после этого не повлияет. Также добавляет в среду глобальные переменные и фильтры Flask.

Changelog

Изменено в версии 0.11: Environment.auto_reload устанавливается в соответствии с TEMPLATES_AUTO_RELOAD параметром конфигурации.

Добавлено в версии 0.5.

Тип возвращаемого значения

flask.templating.Environment

create_url_adapter(request)

Создаёт адаптер URL для данного запроса. Адаптер URL создаётся в момент, когда контекст запроса ещё не настроен, поэтому запрос передаётся явно.

Changelog

Изменено в версии 1.0: SERVER_NAME больше не неявно включает соответствие по поддоменам. Используйте subdomain_matching вместо этого.

Изменено в версии 0.9: Теперь его можно вызывать и без объекта запроса, когда адаптер URL создаётся для контекста приложения.

Добавлено в версии 0.6.

Параметры

request (Optional[flask.wrappers.Request]) –

Тип возвращаемого значения

Optional[werkzeug.routing.MapAdapter]

property debug: bool

Включён ли режим отладки. При использовании flask run для запуска сервера разработки, интерактивный отладчик будет отображаться для необработанных исключений, а сервер будет перезагружаться при изменении кода. Соответствует ключу конфигурации DEBUG. Включается, когда env равен 'development', и переопределяется переменной среды FLASK_DEBUG. Может работать некорректно, если установлен в коде.

Не включайте режим отладки при развертывании в производственной среде.

Значение по умолчанию: True, если env равен 'development', или False в противном случае.

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

Параметры конфигурации по умолчанию.

delete(rule, **options)

Сокращение для route() с methods=["DELETE"].

Добавлено в версии 2.0.

Параметры
  • rule (str) –
  • options (Any) –
Тип возвращаемого значения

Callable

dispatch_request()

Выполняет обработку запроса. Сопоставляет URL и возвращает значение обработчика представления или обработчика ошибок. Это не обязательно должен быть объект ответа. Для преобразования возвращаемого значения в правильный объект ответа используйте make_response().

Журнал изменений

Изменено в версии 0.7: Больше не обрабатывает исключения, этот код был перемещён в новый full_dispatch_request().

Тип возвращаемого значения

Union[Ответ, AnyStr, Dict[строка, Any], Generator[AnyStr, None, None], Tuple[Union[Ответ, AnyStr, Dict[строка, Any], Generator[AnyStr, None, None]], Union[Headers, Dict[строка, Union[строка, List[строка], Tuple[строка, …]]], List[Tuple[строка, Union[строка, List[строка], Tuple[строка, …]]]]]], Tuple[Union[Ответ, AnyStr, Dict[строка, Any], Generator[AnyStr, None, None]], целое число], Tuple[Union[Ответ, AnyStr, Dict[строка, Any], Generator[AnyStr, None, None]], целое число, Union[Headers, Dict[строка, Union[строка, List[строка], Tuple[строка, …]]], List[Tuple[строка, Union[строка, List[строка], Tuple[строка, …]]]]]], WSGIApplication]

do_teardown_appcontext(exc=<object object>)

Вызывается непосредственно перед удалением контекста приложения.

При обработке запроса контекст приложения удаляется после контекста запроса. См. do_teardown_request().

Вызывает все функции, помеченные декоратором teardown_appcontext(). Затем отправляется сигнал appcontext_tearing_down.

Вызывается AppContext.pop().

Журнал изменений

Новое в версии 0.9.

Параметры

exc (Optional[BaseException]) –

Тип возвращаемого значения

None

do_teardown_request(exc=<object object>)

Вызывается после обработки запроса и возврата ответа, непосредственно перед удалением контекста запроса.

Вызывает все функции, помеченные декоратором teardown_request(), и Blueprint.teardown_request(), если запрос обрабатывал blueprint. Наконец, отправляется сигнал request_tearing_down.

Вызывается RequestContext.pop(), который может быть задержан во время тестирования для сохранения доступа к ресурсам.

Параметры

exc (Optional[BaseException]) – Необработанное исключение, поднятое во время обработки запроса. Определяется из текущей информации об исключении, если не передано. Передаётся каждой функции завершения.

Тип возвращаемого значения

None

Журнал изменений

Изменено в версии 0.9: Добавлен аргумент exc.

endpoint(endpoint)

Декорирует функцию представления для регистрации её под данным конечным пунктом. Используется, если правило добавлено без view_func с помощью add_url_rule().

app.add_url_rule("/ex", endpoint="example")

@app.endpoint("example")
def example():
    ...
Параметры

endpoint (строка) – Имя конечного пункта, которое будет ассоциировано с функцией представления.

Тип возвращаемого значения

Callable

ensure_sync(func)

Обеспечивает синхронность функции для WSGI-рабочих процессов. Простые def функции возвращаются как есть. async def функции оборачиваются для выполнения и ожидания ответа.

Переопределите этот метод, чтобы изменить способ работы с асинхронными представлениями приложения.

Новое в версии 2.0.

Параметры

func (Callable) –

Тип возвращаемого значения

Callable

env

Среда, в которой работает приложение. Flask и расширения могут включать поведение, основанное на среде, например, включение отладочного режима. Соответствует ключу конфигурации ENV. Устанавливается переменной окружения FLASK_ENV, и может работать непредсказуемо, если установлено в коде.

Не включайте отладку при развертывании в продакшене.

Значение по умолчанию: 'production'

error_handler_spec: t.Dict[AppOrBlueprintKey, t.Dict[t.Optional[int], t.Dict[t.Type[Exception], ErrorHandlerCallable]]]

Структура данных зарегистрированных обработчиков ошибок в формате {scope: {code: {class: handler}}}`. Ключ scope — имя используемого блейнпринта, или None для всех запросов. Ключ code — HTTP код состояния для HTTPException, или None для других исключений. Внутренний словарь сопоставляет классы исключений с функциями-обработчиками.

Для регистрации обработчика ошибок используйте декоратор errorhandler().

Эта структура данных внутренняя. Не следует изменять её напрямую, и её формат может измениться в любое время.

errorhandler(code_or_exception)

Регистрация функции для обработки ошибок по коду или классу исключения.

Декоратор, используемый для регистрации функции, связанной с кодом ошибки. Пример:

@app.errorhandler(404)
def page_not_found(error):
    return 'This page does not exist', 404

Вы также можете регистрировать обработчики для произвольных исключений:

@app.errorhandler(DatabaseError)
def special_exception_handler(error):
    return 'Database connection failed', 500
Changelog

New in version 0.7: Используйте register_error_handler() вместо непосредственного изменения error_handler_spec для глобальных обработчиков ошибок приложения.

New in version 0.7: Теперь можно регистрировать также пользовательские типы исключений, которые не обязательно должны быть подклассами класса HTTPException.

Parameters

code_or_exception (Union[Type[Exception], int]) – код ошибки как целое число или произвольное исключение

Return type

Callable

extensions: dict

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

Ключ должен соответствовать имени модуля расширения. Например, в случае расширения «Flask-Foo» в flask_foo, ключ будет 'foo'.

Changelog

New in version 0.7.

full_dispatch_request()

Обрабатывает запрос и выполняет предобработку и пост обработку запроса, а также перехват и обработку исключений HTTP.

Changelog

New in version 0.7.

Return type

flask.wrappers.Response

get(rule, **options)

Сокращение для route() с methods=["GET"].

New in version 2.0.

Parameters
  • rule (str) –
  • options (Any) –
Return type

Callable

get_send_file_max_age(filename)

Используется send_file() для определения значения кеша max_age для заданного пути к файлу, если оно не было передано.

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

Changed in version 2.0: Значение по умолчанию конфигурации изменено на None вместо 12 часов.

Changelog

New in version 0.9.

Parameters

filename (str) –

Return type

Optional[int]

property got_first_request: bool

Это атрибут, который устанавливается в True если приложение начало обработку первого запроса.

Changelog

New in version 0.8.

handle_exception(e)

Обрабатывает исключение, для которого не был зарегистрирован обработчик ошибок или которое было вызвано из обработчика ошибок. Это всегда приводит к ответу 500 InternalServerError.

Всегда отправляет сигнал got_request_exception.

Если propagate_exceptions установлено в True, например, в режиме отладки, ошибка будет повторно поднята, чтобы отладчик мог её отобразить. В противном случае исходное исключение будет записано в лог, и будет возвращен ответ InternalServerError.

Если обработчик ошибок зарегистрирован для InternalServerError или 500, он будет использован. Для согласованности, обработчик всегда будет получать InternalServerError. Исходное необработанное исключение доступно как e.original_exception.

Changelog

Changed in version 1.1.0: Обработчику всегда передаётся экземпляр InternalServerError, устанавливая original_exception в необработанную ошибку.

Changed in version 1.1.0: Функции after_request и другие операции завершения выполняются даже для стандартного ответа 500, когда нет обработчика.

New in version 0.3.

Parameters

e (Exception) –

Return type

flask.wrappers.Response

handle_http_exception(e)

Обрабатывает исключение HTTP. По умолчанию это вызовет зарегистрированные обработчики ошибок и вернёт исключение в качестве ответа.

Журнал изменений

Изменено в версии 1.0.3: RoutingException, используемый внутри для таких действий, как перенаправления слэшей во время маршрутизации, не передаётся обработчикам ошибок.

Изменено в версии 1.0: Исключения ищутся по коду и по MRO, поэтому HTTPExcpetion подклассы могут обрабатываться с помощью универсального обработчика для базового HTTPException.

Новое в версии 0.3.

Параметры

e (werkzeug.exceptions.HTTPException) –

Тип возвращаемого значения

Union[werkzeug.exceptions.HTTPException, Response, AnyStr, Dict[str, Any], Generator[AnyStr, None, None], Tuple[Union[Response, AnyStr, Dict[str, Any], Generator[AnyStr, None, None]], Union[Headers, Dict[str, Union[str, List[str], Tuple[str, …]]], List[Tuple[str, Union[str, List[str], Tuple[str, …]]]]]], Tuple[Union[Response, AnyStr, Dict[str, Any], Generator[AnyStr, None, None]], int], Tuple[Union[Response, AnyStr, Dict[str, Any], Generator[AnyStr, None, None]], int, Union[Headers, Dict[str, Union[str, List[str], Tuple[str, …]]], List[Tuple[str, Union[str, List[str], Tuple[str, …]]]]]]]], WSGIApplication]

handle_url_build_error(error, endpoint, values)

Обработка BuildError на url_for().

Параметры
  • error (Exception) –
  • endpoint (str) –
  • values (dict) –
Тип возвращаемого значения

str

handle_user_exception(e)

Этот метод вызывается всякий раз, когда происходит исключение, которое должно быть обработано. Особый случай — HTTPException, который передаётся методу handle_http_exception(). Эта функция либо вернёт значение ответа, либо повторно поднимет исключение с тем же отслеживанием.

Changelog

Изменено в версии 1.0: Ошибки ключей, поднятые из данных запроса, такие как form, показывают неверный ключ в режиме отладки, а не общее сообщение о плохом запросе.

Добавлено в версии 0.7.

Параметры

e (Исключение) –

Тип возвращаемого значения

Union[werkzeug.exceptions.HTTPException, Ответ, AnyStr, Dict[строка, Any], Generator[AnyStr, None, None], Tuple[Union[Ответ, AnyStr, Dict[строка, Any], Generator[AnyStr, None, None]], Union[Headers, Dict[строка, Union[строка, List[строка], Tuple[строка, …]]], List[Tuple[строка, Union[строка, List[строка], Tuple[строка, …]]]]]], WSGIApplication]

property has_static_folder: bool

True если static_folder задан.

Changelog

Добавлено в версии 0.5.

import_name

Имя пакета или модуля, к которому относится этот объект. Не изменяйте его после установки конструктором.

inject_url_defaults(endpoint, values)

Прямо вставляет значения по умолчанию для заданного конечной точки в словарь значений, переданный. Это используется внутри и автоматически вызывается при построении URL.

Changelog

Добавлено в версии 0.7.

Параметры
  • endpoint (строка) –
  • values (словарь) –
Тип возвращаемого значения

None

instance_path

Содержит путь к папке экземпляра.

Changelog

Добавлено в версии 0.8.

iter_blueprints()

Итерируется по всем blueprints в порядке их регистрации.

Changelog

Добавлено в версии 0.11.

Тип возвращаемого значения

ValuesView[Blueprint]

property jinja_env: flask.templating.Environment

Среда Jinja, используемая для загрузки шаблонов.

Среда создаётся при первом обращении к этому свойству. Изменение jinja_options после этого не повлияет.

jinja_environment

псевдоним flask.templating.Environment

property jinja_loader: Optional[jinja2.loaders.FileSystemLoader]

Загрузчик Jinja для шаблонов этого объекта. По умолчанию это класс jinja2.loaders.FileSystemLoader в template_folder, если он задан.

Changelog

Добавлено в версии 0.5.

jinja_options: dict = {}

Параметры, передаваемые среде Jinja в create_jinja_environment(). Изменение этих параметров после создания среды (обращение к jinja_env) не повлияет.

Changelog

Изменено в версии 1.1.0: Это dict вместо ImmutableDict, для более удобной настройки.

json_decoder

псевдоним flask.json.JSONDecoder

json_encoder

псевдоним flask.json.JSONEncoder

log_exception(exc_info)

Регистрирует исключение. Это вызывается методом handle_exception(), если отладка отключена, и непосредственно перед вызовом обработчика. По умолчанию исключение регистрируется как ошибка в логгере logger.

Changelog

Добавлен в версии 0.8.

Parameters

exc_info (Union[Tuple[type, BaseException, types.TracebackType], Tuple[None, None, None]]) –

Возвращаемое значение

None

property logger: logging.Logger

Стандартный Python Logger приложения, с тем же именем, что и name.

В режиме отладки уровень логгера level будет установлен на DEBUG.

Если нет настроенных обработчиков, будет добавлен обработчик по умолчанию. Подробнее см. Ведение журналов.

Changelog

Изменено в версии 1.1.0: Логгер принимает то же имя, что и name, а не жестко заданное "flask.app".

Изменено в версии 1.0.0: Поведение упрощено. Логгер всегда имеет имя "flask.app". Уровень устанавливается только во время конфигурирования, не проверяя app.debug каждый раз. Используется только один формат, а не разные в зависимости от app.debug. Обработчики не удаляются, и обработчик добавляется только если обработчики еще не настроены.

Добавлен в версии 0.3.

make_config(instance_relative=False)

Используется для создания атрибута config конструктором Flask. Параметр instance_relative передается из конструктора Flask (там он называется instance_relative_config) и указывает, должна ли конфигурация относиться к пути экземпляра или корневому пути приложения.

Changelog

Добавлен в версии 0.8.

Parameters

instance_relative (bool) –

Возвращаемое значение

flask.config.Config

make_default_options_response()

Этот метод вызывается для создания ответа по умолчанию OPTIONS. Это можно изменить, создав подкласс, чтобы изменить стандартное поведение ответов OPTIONS.

Changelog

Добавлен в версии 0.7.

Возвращаемое значение

flask.wrappers.Response

make_response(rv)

Преобразует возвращаемое значение из функции представления в экземпляр response_class.

Параметры

rv (Union[Response, AnyStr, Dict[str, Any], Generator[AnyStr, None, None], Tuple[Union[Response, AnyStr, Dict[str, Any], Generator[AnyStr, None, None]], Union[Headers, Dict[str, Union[str, List[str], Tuple[str, ...]]], List[Tuple[str, Union[str, List[str], Tuple[str, ...]]]]], Tuple[Union[Response, AnyStr, Dict[str, Any], Generator[AnyStr, None, None]], int], Tuple[Union[Response, AnyStr, Dict[str, Any], Generator[AnyStr, None, None]], int, Union[Headers, Dict[str, Union[str, List[str], Tuple[str, ...]]], List[Tuple[str, Union[str, List[str], Tuple[str, ...]]]]]], WSGIApplication]) –

возвращаемое значение функции представления. Функция представления должна возвращать ответ. Возвращение None, или окончание представления без возврата, запрещено. Разрешены следующие типы для view_rv:

str

Создается объект ответа с строкой, закодированной в UTF-8, в качестве тела.

bytes

Создается объект ответа с байтами в качестве тела.

dict

Словарь, который будет сериализован с помощью jsonify перед возвратом.

tuple

Любой из (body, status, headers), (body, status), или (body, headers), где body — любой из других разрешённых здесь типов, status — строка или целое число, а headers — словарь или список (key, value) кортежей. Если body — экземпляр response_class, status перезаписывает существующее значение, а headers расширяются.

response_class

Объект возвращается без изменений.

other Response class

Объект преобразуется в response_class.

callable()

Функция вызывается как WSGI-приложение. Результат используется для создания объекта ответа.

Тип возвращаемого значения

flask.wrappers.Response

Изменения

Изменено в версии 0.9: Ранее кортеж интерпретировался как аргументы для объекта ответа.

make_shell_context()

Возвращает контекст оболочки для интерактивной оболочки для этого приложения. Выполняются все зарегистрированные обработчики контекста оболочки.

Изменения

Добавлен в версии 0.11.

Тип возвращаемого значения

dict

property name: str

Имя приложения. Обычно это имя импорта с той разницей, что оно угадывается из файла запуска, если имя импорта — main. Это имя используется в качестве отображаемого имени, когда Flask нуждается в имени приложения. Его можно задать и переопределить, чтобы изменить значение.

Изменения

Добавлен в версии 0.8.

open_instance_resource(resource, mode='rb')

Открывает ресурс из папки экземпляра приложения (instance_path). В противном случае работает как open_resource(). Ресурсы экземпляра также могут открываться для записи.

Параметры
  • resource (str) – имя ресурса. Для доступа к ресурсам внутри подпапок используйте косые черты в качестве разделителя.
  • mode (str) – режим открытия файла ресурса, по умолчанию ‘rb’.
Тип возвращаемого значения

IO

open_resource(resource, mode='rb')

Открыть файл ресурса, относящийся к root_path, для чтения.

Например, если файл schema.sql находится рядом с файлом app.py, где определён Flask приложение, его можно открыть так:

with app.open_resource("schema.sql") as f:
    conn.executescript(f.read())
Параметры
  • resource (str) – Путь к ресурсу относительно root_path.
  • mode (str) – Режим открытия файла. Поддерживается только чтение, допустимые значения — “r” (или “rt”) и “rb”.
Тип возвращаемого значения

IO

patch(rule, **options)

Сокращение для route() с methods=["PATCH"].

Новое в версии 2.0.

Параметры
  • rule (str) –
  • options (Any) –
Тип возвращаемого значения

Callable

permanent_session_lifetime

timedelta, используемый для установки даты истечения срока действия постоянной сессии. По умолчанию — 31 день, что обеспечивает примерно месячный срок действия постоянной сессии.

Этот атрибут также можно настроить из конфигурации с ключом конфигурации PERMANENT_SESSION_LIFETIME. По умолчанию timedelta(days=31)

post(rule, **options)

Сокращение для route() с methods=["POST"].

Новое в версии 2.0.

Параметры
  • rule (str) –
  • options (Any) –
Тип возвращаемого значения

Callable

preprocess_request()

Вызывается перед обработкой запроса. Вызывает зарегистрированные в приложении и текущем шаблоне url_value_preprocessors обработчики значений URL. Затем вызывает зарегистрированные в приложении и шаблоне before_request_funcs функции.

Если любой обработчик before_request() возвращает значение, отличное от None, это значение обрабатывается так, как если бы оно было возвращённым значением от представления, и дальнейшая обработка запроса прекращается.

Тип возвращаемого значения

Optional[Union[Response, AnyStr, Dict[str, Any], Generator[AnyStr, None, None], Tuple[Union[Response, AnyStr, Dict[str, Any], Generator[AnyStr, None, None]], Union[Headers, Dict[str, Union[str, List[str], Tuple[str, …]]], List[Tuple[str, Union[str, List[str], Tuple[str, …]]]]]], WSGIApplication]]

property preserve_context_on_exception: bool

Возвращает значение конфигурации PRESERVE_CONTEXT_ON_EXCEPTION в случае его установки, иначе возвращается разумное значение по умолчанию.

Изменения

Новое в версии 0.7.

process_response(response)

Может быть переопределён для изменения объекта ответа перед отправкой его WSGI-серверу. По умолчанию вызывает все функции, декорированные after_request().

Изменения

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

Параметры

response (flask.wrappers.Response) – объект response_class.

Возвращаемое значение

новый объект ответа или тот же, должен быть экземпляром response_class.

Тип возвращаемого значения

flask.wrappers.Response

property propagate_exceptions: bool

Возвращает значение конфигурации PROPAGATE_EXCEPTIONS в случае его установки, иначе возвращается разумное значение по умолчанию.

Изменения

Новое в версии 0.7.

put(rule, **options)

Сокращение для route() с methods=["PUT"].

Новое в версии 2.0.

Параметры
  • rule (str) –
  • options (Any) –
Тип возвращаемого значения

Callable

register_blueprint(blueprint, **options)

Регистрирует Blueprint в приложении. Аргументы ключевых слов, переданные этому методу, переопределят значения по умолчанию, установленные в чертеже.

Вызывает метод register() чертежа после записи чертежа в blueprints приложения.

Параметры
  • blueprint (Blueprint) – Чертеж для регистрации.
  • url_prefix – Маршруты чертежа будут иметь этот префикс.
  • subdomain – Маршруты чертежа будут соответствовать этому поддомену.
  • url_defaults – Маршруты чертежа будут использовать эти значения по умолчанию для аргументов представления.
  • options (Any) – Дополнительные аргументы ключевых слов передаются в BlueprintSetupState. К ним можно получить доступ в обратных вызовах record().
Тип возвращаемого значения

None

Журнал изменений

Новое в версии 0.7.

register_error_handler(code_or_exception, f)

Альтернативная функция присоединения ошибок к декоратору errorhandler(), которая проще в использовании для не декоративного использования.

Журнал изменений

Новое в версии 0.7.

Параметры
  • code_or_exception (Union[Type[Exception], int]) –
  • f (Callable[[Exception], Union[Response, AnyStr, Dict[str, Any], Generator[AnyStr, None, None], Tuple[Union[Response, AnyStr, Dict[str, Any], Generator[AnyStr, None, None]], Union[Headers, Dict[str, Union[str, List[str], Tuple[str, ...]]], List[Tuple[str, Union[str, List[str], Tuple[str, ...]]]]]], Tuple[Union[Response, AnyStr, Dict[str, Any], Generator[AnyStr, None, None]], int], Tuple[Union[Response, AnyStr, Dict[str, Any], Generator[AnyStr, None, None]], int, Union[Headers, Dict[str, Union[str, List[str], Tuple[str, ...]]], List[Tuple[str, Union[str, List[str], Tuple[str, ...]]]]]]], WSGIApplication]]) –
Тип возвращаемого значения

None

request_class

псевдоним flask.wrappers.Request

request_context(environ)

Создать RequestContext, представляющий среду WSGI. Используйте блок with для добавления контекста, что позволит request указывать на этот запрос.

См. Контекст запроса.

Как правило, вы не должны вызывать этот метод из собственного кода. Контекст запроса автоматически добавляется методом wsgi_app() при обработке запроса. Используйте test_request_context() для создания среды и контекста вместо этого метода.

Параметры

environ (dict) – среда WSGI

Тип возвращаемого значения

flask.ctx.RequestContext

response_class

псевдоним flask.wrappers.Response

root_path

Абсолютный путь к пакету в файловой системе. Используется для поиска ресурсов, содержащихся в пакете.

route(rule, **options)

Декорировать функцию представления, чтобы зарегистрировать её с заданным правилом URL и параметрами. Вызывает add_url_rule(), в котором содержится более подробная информация об реализации.

@app.route("/")
def index():
    return "Hello, World!"

См. Регистрация правил маршрутов URL.

Имя конечной точки маршрута по умолчанию равно имени функции представления, если параметр endpoint не указан.

Параметр methods по умолчанию равен ["GET"]. HEAD и OPTIONS добавляются автоматически.

Параметры
  • rule (str) – строка правила URL.
  • options (Any) – дополнительные параметры, передаваемые объекту Rule.
Тип возвращаемого значения

Callable

run(host=None, port=None, debug=None, load_dotenv=True, **options)

Запускает приложение на локальном сервере разработки.

Не используйте run() в производственной среде. Оно не предназначено для удовлетворения требований безопасности и производительности для сервера в производстве. Вместо этого см. Варианты развертывания для рекомендаций по серверам WSGI.

Если флаг debug установлен, сервер автоматически перезагрузится при изменении кода и отобразит отладчик в случае возникновения исключения.

Если вы хотите запустить приложение в режиме отладки, но отключить выполнение кода в интерактивном отладчике, можно передать use_evalex=False в качестве параметра. Это позволит сохранить активным окно отслеживания ошибок отладчика, но отключит выполнение кода.

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

Обратите внимание

Flask будет подавлять любые ошибки сервера, используя общую страницу ошибок, если он не находится в режиме отладки. Таким образом, для включения только интерактивного отладчика без перезагрузки кода, необходимо вызвать run() с debug=True и use_reloader=False. Установка use_debugger в True без включения режима отладки не перехватит никаких исключений, потому что их не будет.

Параметры
  • host (Необязательно[str]) – имя хоста для прослушивания. Установите его в значение '0.0.0.0' , чтобы сервер также был доступен извне. По умолчанию '127.0.0.1' или хост из переменной конфигурации SERVER_NAME, если она присутствует.
  • port (Необязательно[int]) – порт веб-сервера. По умолчанию 5000 или порт, определенный в переменной конфигурации SERVER_NAME, если она присутствует.
  • debug (Необязательно[bool]) – если указано, включить или отключить режим отладки. См. debug.
  • load_dotenv (bool) – загрузить ближайшие файлы .env и .flaskenv для установки переменных среды. Также изменит рабочую директорию на директорию, содержащую первый найденный файл.
  • options (Any) – параметры, передаваемые в основной сервер Werkzeug. См. werkzeug.serving.run_simple() для получения дополнительной информации.
Тип возвращаемого значения

None

Журнал изменений

Изменено в версии 1.0: Если установлен, будет использоваться python-dotenv для загрузки переменных среды из файлов .env и .flaskenv.

Если установлены, переменные среды FLASK_ENV и FLASK_DEBUG переопределят env и debug.

Режим потоков включён по умолчанию.

Изменено в версии 0.10: Порт по умолчанию теперь выбирается из переменной SERVER_NAME.

secret_key

Если ключ секретности установлен, криптографические компоненты могут использовать его для подписи файлов cookie и других данных. Установите это значение в сложное случайное значение, когда вы хотите использовать защищённый cookie, например.

Этот атрибут также можно настроить из конфигурации с помощью ключа конфигурации SECRET_KEY. По умолчанию None.

select_jinja_autoescape(filename)

Возвращает True , если автоматическая экранизация должна быть активна для данного имени шаблона. Если имя шаблона не указано, возвращает True.

Журнал изменений

Добавлено в версии 0.5.

Параметры

filename (str) –

Тип возвращаемого значения

bool

send_file_max_age_default

timedelta или число секунд, используемое как значение по умолчанию max_age для send_file(). Значение по умолчанию None, что говорит браузеру использовать условные запросы вместо кэширования с таймером.

Настраивается с помощью ключа конфигурации SEND_FILE_MAX_AGE_DEFAULT.

Изменено в версии 2.0: По умолчанию None вместо 12 часов.

send_static_file(filename)

Функция-вью, используемая для обработки файлов из static_folder. Маршрут для этой вью автоматически регистрируется по адресу static_url_path, если задан static_folder.

Изменения

В версии 0.5.

Параметры

filename (str) –

Тип возвращаемого значения

Response

session_cookie_name

Имя куки сессии, используемой для защищённой куки.

Этот атрибут также можно настроить через конфигурацию с ключом SESSION_COOKIE_NAME. По умолчанию 'session'

session_interface = <flask.sessions.SecureCookieSessionInterface object>

интерфейс сессии для использования. По умолчанию используется экземпляр SecureCookieSessionInterface.

Изменения

В версии 0.8.

shell_context_processor(f)

Регистрирует функцию обработчика контекста оболочки.

Изменения

В версии 0.11.

Параметры

f (Callable) –

Тип возвращаемого значения

Callable

shell_context_processors: t.List[t.Callable[], t.Dict[str, t.Any]]]

Список функций обработчиков контекста оболочки, которые должны быть выполнены при создании контекста оболочки.

Изменения

В версии 0.11.

should_ignore_error(error)

Вызывается для определения, нужно ли игнорировать ошибку в системе разбора. Если эта функция возвращает True, обработчики разбора не получат ошибку.

Изменения

В версии 0.10.

Параметры

error (Optional[BaseException]) –

Тип возвращаемого значения

bool

property static_folder: Optional[str]

Абсолютный путь к папке со статическими файлами. None если папка не задана.

property static_url_path: Optional[str]

Префикс URL, по которому будет доступна статическая страница.

Если не был настроен во время инициализации, определяется из static_folder.

teardown_appcontext(f)

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

Пример:

ctx = app.app_context()
ctx.push()
...
ctx.pop()

Когда ctx.pop() выполняется в приведённом примере, функции разбора вызываются непосредственно перед тем, как контекст приложения покидает стек активных контекстов. Это становится важным при использовании подобных конструкций в тестах.

Поскольку контекст запроса обычно также управляет контекстом приложения, он также будет вызываться при выходе из контекста запроса.

Если функция разбора вызывается из-за необработанной исключительной ситуации, ей будет передан объект ошибки. Если зарегистрирован errorhandler(), он обработает исключение, и функция разбора не получит его.

Возвращаемые значения функций разбора игнорируются.

Изменения

В версии 0.9.

Параметры

f (Callable[[Optional[BaseException]], flask.wrappers.Response]) –

Тип возвращаемого значения

Callable[[Optional[BaseException]], flask.wrappers.Response]

teardown_appcontext_funcs: t.List[TeardownCallable]

Список функций, которые вызываются при уничтожении контекста приложения. Поскольку контекст приложения также уничтожается при завершении запроса, это место для хранения кода, который отсоединяется от баз данных.

Изменения

В версии 0.9.

teardown_request(f)

Регистрирует функцию, которая будет выполнена в конце каждого запроса, независимо от наличия исключительной ситуации. Эти функции выполняются при выходе из контекста запроса, даже если запрос не был выполнен.

Пример:

ctx = app.test_request_context()
ctx.push()
...
ctx.pop()

Когда ctx.pop() выполняется в приведённом примере, функции разбора вызываются непосредственно перед тем, как контекст запроса покидает стек активных контекстов. Это становится важным при использовании таких конструкций в тестах.

Функции разбора должны избегать создания исключительных ситуаций, поскольку они . Если они выполняют код, который может завершиться ошибкой, им нужно окружать выполнение этого кода операторами try/except и регистрировать возникшие ошибки.

Если функция разбора вызывается из-за исключительной ситуации, ей будет передан объект ошибки.

Возвращаемые значения функций разбора игнорируются.

Примечание отладки

В режиме отладки Flask не будет сразу завершать запрос при возникновении исключительной ситуации. Вместо этого он сохранит его активным, чтобы интерактивный отладчик мог к нему обратиться. Это поведение можно контролировать с помощью переменной конфигурации PRESERVE_CONTEXT_ON_EXCEPTION.

Параметры

f (Callable[[Optional[BaseException]], Response]) –

Тип возвращаемого значения

Callable[[Optional[BaseException]], Response]

teardown_request_funcs: t.Dict[AppOrBlueprintKey, t.List[TeardownCallable]]

Структура данных функций, которые вызываются в конце каждого запроса, даже если возникает исключение, в формате {scope: [functions]}. Ключ scope — имя модуля, для которого активны функции, или None для всех запросов.

Для регистрации функции используйте декоратор teardown_request().

Эта структура данных внутренняя. Не следует изменять её напрямую, и её формат может измениться в любой момент.

template_context_processors: t.Dict[AppOrBlueprintKey, t.List[TemplateContextProcessorCallable]]

Структура данных функций, которые вызываются для передачи дополнительных значений контекста при рендеринге шаблонов, в формате {scope: [functions]}. Ключ scope — имя модуля, для которого активны функции, или None для всех запросов.

Для регистрации функции используйте декоратор context_processor().

Эта структура данных внутренняя. Не следует изменять её напрямую, и её формат может измениться в любой момент.

template_filter(name=None)

Декоратор, используемый для регистрации пользовательского фильтра шаблонов. Можно указать имя фильтра, в противном случае будет использовано имя функции. Пример:

@app.template_filter()
def reverse(s):
    return s[::-1]
Параметры

name (Необязательно[str]) – необязательное имя фильтра, в противном случае будет использовано имя функции.

Тип возвращаемого значения

Callable

template_folder

Путь к папке шаблонов, относительный к root_path, для добавления в загрузчик шаблонов. None если шаблоны не должны добавляться.

template_global(name=None)

Декоратор, используемый для регистрации пользовательской глобальной функции шаблона. Можно указать имя глобальной функции, в противном случае будет использовано имя функции. Пример:

@app.template_global()
def double(n):
    return 2 * n
Изменения

В версии 0.10.

Параметры

name (Необязательно[str]) – необязательное имя глобальной функции, в противном случае будет использовано имя функции.

Тип возвращаемого значения

Callable

template_test(name=None)

Декоратор, используемый для регистрации пользовательского теста шаблона. Можно указать имя теста, в противном случае будет использовано имя функции. Пример:

@app.template_test()
def is_prime(n):
    if n == 2:
        return True
    for i in range(2, int(math.ceil(math.sqrt(n))) + 1):
        if n % i == 0:
            return False
    return True
Изменения

В версии 0.10.

Параметры

name (Необязательно[str]) – необязательное имя теста, в противном случае будет использовано имя функции.

Тип возвращаемого значения

Callable

property templates_auto_reload: bool

Перезагружать шаблоны при их изменении. Используется create_jinja_environment().

Этот атрибут можно настроить с помощью TEMPLATES_AUTO_RELOAD. Если не задан, он будет включён в режиме отладки.

Изменения

В версии 1.0: Этот свойство было добавлено, но соответствующая настройка и поведение уже существовали.

test_cli_runner(**kwargs)

Создать CLI-раннер для тестирования команд CLI. См. Тестирование команд CLI.

Возвращает экземпляр test_cli_runner_class, по умолчанию FlaskCliRunner. Объект приложения Flask передаётся в качестве первого аргумента.

Изменения

В версии 1.0.

Параметры

kwargs (Любой) –

Тип возвращаемого значения

FlaskCliRunner

test_cli_runner_class: Optional[Type[FlaskCliRunner]] = None

Подкласс CliRunner, по умолчанию FlaskCliRunner, используемый test_cli_runner(). Его __init__ метод должен принимать объект приложения Flask в качестве первого аргумента.

Изменения

В версии 1.0.

test_client(use_cookies=True, **kwargs)

Создаёт тестовый клиент для этого приложения. Подробнее о тестировании см. Тестирование приложений Flask.

Обратите внимание, что если вы тестируете утверждения или исключения в коде приложения, вам необходимо установить app.testing = True для того, чтобы исключения распространялись до тестового клиента. В противном случае исключение будет обработано приложением (невидимым для тестового клиента), и единственным указанием на ошибку AssertionError или другое исключение будет код состояния 500, возвращаемый тестовому клиенту. См. атрибут testing. Например:

app.testing = True
client = app.test_client()

Тестовый клиент может использоваться в блоке with для отложенного закрытия контекста до конца блока with. Это полезно, если вам нужно получить доступ к локальным переменным контекста для тестирования:

with app.test_client() as c:
    rv = c.get('/?vodka=42')
    assert request.args['vodka'] == '42'

Кроме того, вы можете передать необязательные ключевые аргументы, которые затем будут переданы конструктору приложения test_client_class. Например:

from flask.testing import FlaskClient

class CustomClient(FlaskClient):
    def __init__(self, *args, **kwargs):
        self._authentication = kwargs.pop("authentication")
        super(CustomClient,self).__init__( *args, **kwargs)

app.test_client_class = CustomClient
client = app.test_client(authentication='Basic ....')

См. FlaskClient для получения дополнительной информации.

Изменения

Изменено в версии 0.11: Добавлен **kwargs для поддержки передачи дополнительных ключевых аргументов в конструктор test_client_class.

В версии 0.7: Добавлен параметр use_cookies и возможность переопределения используемого клиента с помощью атрибута test_client_class.

Изменено в версии 0.4: добавлена поддержка использования блока with для клиента.

Параметры
  • use_cookies (bool) –
  • kwargs (Любой) –
Тип возвращаемого значения

FlaskClient

test_client_class: Optional[Type[FlaskClient]] = None

Тестовый клиент, используемый при test_client.

Изменения

В версии 0.7.

test_request_context(*args, **kwargs)

Создайте RequestContext для среды WSGI, созданной из заданных значений. Это в основном полезно во время тестирования, когда вы хотите запустить функцию, использующую данные запроса, не отправляя полный запрос.

См. Контекст запроса.

Используйте блок with для помещения контекста, что позволит request указывать на запрос для созданной среды.

with test_request_context(...):
    generate_report()

При использовании оболочки может быть проще вручную помещать и извлекать контекст, чтобы избежать отступов.

ctx = app.test_request_context(...)
ctx.push()
...
ctx.pop()

Принимает те же аргументы, что и EnvironBuilder Werkzeug, с некоторыми значениями по умолчанию из приложения. Большинство доступных аргументов можно найти в документации Werkzeug по ссылке. Здесь описано поведение, специфичное для Flask.

Параметры
  • path – Путь URL-адреса запроса.
  • base_url – Базовый URL, на котором обслуживается приложение, который path является относительным. Если не задан, создается из PREFERRED_URL_SCHEME, subdomain, SERVER_NAME и APPLICATION_ROOT.
  • subdomain – Имя поддомена, добавляемое к SERVER_NAME.
  • url_scheme – Схема, используемая вместо PREFERRED_URL_SCHEME.
  • data – Тело запроса, как строка или словарь пар «ключ-значение» формы.
  • json – Если задано, оно сериализуется в JSON и передается как data. Также по умолчанию content_type application/json.
  • args (Любой) – другие позиционные аргументы, передаваемые в EnvironBuilder.
  • kwargs (Любой) – другие ключевые аргументы, передаваемые в EnvironBuilder.
Тип возвращаемого значения

flask.ctx.RequestContext

testing

Флаг тестирования. Установите это значение в True для активации тестового режима расширений Flask (и в будущем, вероятно, и самого Flask). Например, это может активировать вспомогательные средства тестирования, имеющие дополнительные затраты во время выполнения, которые не должны быть включены по умолчанию.

Если это включено, и PROPAGATE_EXCEPTIONS не изменен со значения по умолчанию, он подразумевается включенным.

Этот атрибут также можно настроить из конфигурации с ключом конфигурации TESTING. По умолчанию False.

trap_http_exception(e)

Проверяет, следует ли перехватывать исключение HTTP. По умолчанию это будет возвращать False для всех исключений, за исключением ошибки ключа при плохом запросе, если TRAP_BAD_REQUEST_ERRORS установлено в True. Также возвращает True если TRAP_HTTP_EXCEPTIONS установлено в True.

Это вызывается для всех исключений HTTP, поднятых функцией представления. Если для любого исключения возвращается True, обработчик ошибок для этого исключения не вызывается, и оно отображается как обычное исключение в трассировке стека. Это полезно для отладки неявно вызванных исключений HTTP.

Changelog

Изменено в версии 1.0: Ошибки плохого запроса по умолчанию не перехватываются в режиме отладки.

Добавлена в версии 0.8.

Параметры

e (Исключение) –

Тип возвращаемого значения

bool

update_template_context(context)

Обновление контекста шаблона с помощью некоторых часто используемых переменных. Это вставляет request, session, config и g в контекст шаблона, а также все, что процессоры контекста шаблонов хотят вставить. Обратите внимание, что, начиная с Flask 0.6, исходные значения в контексте не будут перезаписаны, если процессор контекста решит вернуть значение с тем же ключом.

Параметры

context (словарь) – контекст в виде словаря, который обновляется на месте для добавления дополнительных переменных.

Тип возвращаемого значения

None

url_build_error_handlers: t.List[t.Callable[[Exception, str, dict], str]]

Список функций, которые вызываются, когда url_for() вызывает BuildError. Каждая зарегистрированная здесь функция вызывается с error, endpoint и values. Если функция возвращает None или вызывает исключение BuildError, пытается вызвать следующую функцию.

Changelog

Добавлена в версии 0.9.

url_default_functions: t.Dict[AppOrBlueprintKey, t.List[URLDefaultCallable]]

Структура данных функций для изменения ключевых аргументов при генерировании URL-адресов в формате {scope: [functions]}. Ключ scope — имя модуля blueprint, для которого активны функции, или None для всех запросов.

Для регистрации функции используйте декоратор url_defaults().

Эта структура данных является внутренней. Ее не следует изменять напрямую, и ее формат может изменяться в любое время.

url_defaults(f)

Функция обратного вызова для значений по умолчанию URL для всех функций представления приложения. Она вызывается с именем конечной точки и значениями и должна обновить переданные значения на месте.

Параметры

f (Вызываемая функция[[строка, словарь], None]) –

Тип возвращаемого значения

Вызываемая функция[[строка, словарь], None]

url_map

Map для этого экземпляра. Вы можете использовать его для изменения преобразователей маршрутизации после создания класса, но до подключения каких-либо маршрутов. Пример:

from werkzeug.routing import BaseConverter

class ListConverter(BaseConverter):
    def to_python(self, value):
        return value.split(',')
    def to_url(self, values):
        return ','.join(super(ListConverter, self).to_url(value)
                        for value in values)

app = Flask(__name__)
app.url_map.converters['list'] = ListConverter
url_map_class

Псевдоним werkzeug.routing.Map

url_rule_class

Псевдоним werkzeug.routing.Rule

url_value_preprocessor(f)

Зарегистрировать функцию предобработки значений URL для всех функций представлений в приложении. Эти функции будут вызваны до функций before_request().

Функция может изменять значения, полученные из сопоставленного URL, перед передачей их представлению. Например, это можно использовать для извлечения общего кода языка и размещения его в g вместо передачи его каждому представлению.

Функции передаются имя конечной точки и словарь значений. Возвращаемое значение игнорируется.

Параметры

f (Callable[[Optional[str], Optional[dict]], None]) –

Тип возвращаемого значения

Callable[[Optional[str], Optional[dict]], None]

url_value_preprocessors: t.Dict[AppOrBlueprintKey, t.List[URLValuePreprocessorCallable]]

Структура данных функций для вызова, чтобы изменить ключевые аргументы, передаваемые функции представления, в формате {scope: [functions]}. Ключ scope — имя схемы, для которой функции активны, или None для всех запросов.

Для регистрации функции используйте декоратор url_value_preprocessor().

Эта структура данных внутренняя. Ее не следует изменять напрямую, и ее формат может быть изменён в любой момент.

use_x_sendfile

Включить эту опцию, если вы хотите использовать функцию X-Sendfile. Имейте в виду, что сервер должен её поддерживать. Это влияет только на файлы, отправленные с помощью метода send_file().

Changelog

Новое в версии 0.2.

Этот атрибут также можно настроить из конфигурации с ключом конфигурации USE_X_SENDFILE. По умолчанию False.

view_functions: t.Dict[str, t.Callable]

Словарь, сопоставляющий имена конечных точек функциям представлений.

Для регистрации функции представления используйте декоратор route().

Эта структура данных внутренняя. Ее не следует изменять напрямую, и ее формат может быть изменён в любой момент.

wsgi_app(environ, start_response)

Фактическое приложение WSGI. Это не реализовано в __call__() , чтобы можно было применять промежуточное ПО без потери ссылки на объект приложения. Вместо этого:

app = MyMiddleware(app)

Лучше сделать так:

app.wsgi_app = MyMiddleware(app.wsgi_app)

Тогда у вас останется исходный объект приложения и вы сможете продолжать вызывать методы на нём.

Changelog

Изменено в версии 0.7: События завершения для контекстов запроса и приложения вызываются даже при возникновении необработанной ошибки. Другие события могут не вызываться в зависимости от того, когда произошла ошибка во время обработки. См. Обработчики и ошибки.

Параметры
  • environ (dict) – Среда WSGI.
  • start_response (Callable) – Вызываемый объект, принимающий код состояния, список заголовков и контекст исключения (необязательный) для начала ответа.
Тип возвращаемого значения

Любой

Объекты схемы

class flask.Blueprint(name, import_name, static_folder=None, static_url_path=None, template_folder=None, url_prefix=None, subdomain=None, url_defaults=None, root_path=None, cli_group=<object object>)

Представляет собой blueprint — набор маршрутов и других функций, связанных с приложением, которые могут быть зарегистрированы в реальном приложении позже.

Blueprint — это объект, позволяющий определять функции приложения без предварительного указания объекта приложения. Он использует те же декораторы, что и Flask, но откладывает необходимость приложения, записывая их для последующей регистрации.

Декорирование функции с помощью blueprint создаёт отложенную функцию, которая вызывается с BlueprintSetupState при регистрации blueprint в приложении.

Для получения дополнительной информации см. Модульные приложения с Blueprints.

Параметры
  • name (str) – Имя blueprint. Будет добавлено в начало имени каждого конечной точки.
  • import_name (str) – Имя пакета blueprint, обычно __name__. Это помогает найти root_path для blueprint.
  • static_folder (Необязательно[str]) – Папка со статическими файлами, которые должны обслуживаться статическим маршрутом blueprint. Путь относительный к корневому пути blueprint. Статические файлы blueprint по умолчанию отключены.
  • static_url_path (Необязательно[str]) – URL для предоставления статических файлов. По умолчанию static_folder. Если у blueprint нет url_prefix, статический маршрут приложения будет иметь приоритет, и статические файлы blueprint не будут доступны.
  • template_folder (Необязательно[str]) – Папка с шаблонами, которые следует добавить в путь поиска шаблонов приложения. Путь относительный к корневому пути blueprint. Шаблоны blueprint по умолчанию отключены. Шаблоны blueprint имеют меньший приоритет, чем шаблоны в папке templates приложения.
  • url_prefix (Необязательно[str]) – Путь, который будет добавлен в начало всех URL blueprint, чтобы сделать их отличными от других маршрутов приложения.
  • subdomain (Необязательно[str]) – Поддомен, на котором маршруты blueprint будут соответствовать по умолчанию.
  • url_defaults (Необязательно[dict]) – Словарь значений по умолчанию, которые маршруты blueprint будут получать по умолчанию.
  • root_path (Необязательно[str]) – По умолчанию blueprint автоматически задаёт это значение на основе import_name. В определённых ситуациях автоматическое определение может не сработать, поэтому путь можно указать вручную.
  • cli_group (Необязательно[str]) –
Изменения

Изменено в версии 1.1.0: Blueprints имеют группу cli для регистрации вложенных команд CLI. Параметр cli_group управляет именем группы в рамках команды flask.

Добавлено в версии 0.7.

add_app_template_filter(f, name=None)

Регистрация пользовательского фильтра шаблонов, доступного во всём приложении. Как Flask.add_template_filter(), но для blueprint. Работает точно так же, как декоратор app_template_filter().

Параметры
  • name (Необязательно[str]) – необязательное имя фильтра, в противном случае будет использовано имя функции.
  • f (Callable[[Any], str]) –
Тип возвращаемого значения

None

add_app_template_global(f, name=None)

Регистрация пользовательской глобальной переменной шаблона, доступной во всём приложении. Как Flask.add_template_global(), но для blueprint. Работает точно так же, как декоратор app_template_global().

Изменения

Добавлено в версии 0.10.

Параметры
  • name (Необязательно[str]) – необязательное имя глобальной переменной, в противном случае будет использовано имя функции.
  • f (Callable[[], Any]) –
Тип возвращаемого значения

None

add_app_template_test(f, name=None)

Регистрация пользовательского теста шаблона, доступного во всём приложении. Как Flask.add_template_test(), но для blueprint. Работает точно так же, как декоратор app_template_test().

Изменения

Добавлено в версии 0.10.

Параметры
  • name (Необязательно[str]) – необязательное имя теста, в противном случае будет использовано имя функции.
  • f (Callable[[Any], bool]) –
Тип возвращаемого значения

None

add_url_rule(rule, endpoint=None, view_func=None, **options)

Аналогично Flask.add_url_rule(), но для blueprint. Конечная точка для функции url_for() дополняется именем blueprint.

Параметры
  • rule (str) –
  • endpoint (Необязательно[str]) –
  • view_func (Необязательно[Callable]) –
  • options (Any) –
Тип возвращаемого значения

None

after_app_request(f)

Аналогично Flask.after_request(), но для blueprint. Такая функция выполняется после каждого запроса, даже если она находится вне blueprint.

Параметры

f (Callable[[Response], Response]) –

Тип возвращаемого значения

Callable[[Response], Response]

after_request(f)

Зарегистрируйте функцию, которая будет выполняться после каждого запроса к этому объекту.

Функция вызывается с объектом ответа и должна возвращать объект ответа. Это позволяет функциям изменять или заменять ответ перед его отправкой.

Если функция вызывает исключение, любые оставшиеся after_request функции не будут вызваны. Поэтому это не следует использовать для действий, которые должны выполняться, например, для закрытия ресурсов. Используйте teardown_request() для этого.

Параметры

f (Callable[[Response], Response]) –

Тип возвращаемого значения

Callable[[Response], Response]

after_request_funcs: t.Dict[AppOrBlueprintKey, t.List[AfterRequestCallable]]

Структура данных функций, которые нужно вызывать в конце каждого запроса, в формате {scope: [functions]}. Ключ scope — имя blueprint, для которого активны функции, или None для всех запросов.

Для регистрации функции используйте декоратор after_request().

Эта структура данных внутренняя. Не следует изменять ее напрямую, и ее формат может измениться в любое время.

app_context_processor(f)

Подобно Flask.context_processor(), но для blueprint. Такая функция выполняется при каждом запросе, даже если она находится вне blueprint.

Параметры

f (Callable[[], Dict[str, Any]]) –

Тип возвращаемого значения

Callable[[], Dict[str, Any]]

app_errorhandler(code)

Подобно Flask.errorhandler(), но для blueprint. Этот обработчик используется для всех запросов, даже если они находятся вне blueprint.

Параметры

code (Union[Type[Exception], int]) –

Тип возвращаемого значения

Callable

app_template_filter(name=None)

Зарегистрируйте пользовательский фильтр шаблонов, доступный во всей приложении. Подобно Flask.template_filter(), но для blueprint.

Параметры

name (Optional[str]) – необязательное имя фильтра, в противном случае будет использовано имя функции.

Тип возвращаемого значения

Callable

app_template_global(name=None)

Зарегистрируйте пользовательскую глобальную переменную шаблона, доступную во всей приложении. Подобно Flask.template_global(), но для blueprint.

Changelog

Добавлено в версии 0.10.

Параметры

name (Optional[str]) – необязательное имя глобальной переменной, в противном случае будет использовано имя функции.

Тип возвращаемого значения

Callable

app_template_test(name=None)

Зарегистрируйте пользовательский тест шаблона, доступный во всей приложении. Подобно Flask.template_test(), но для blueprint.

Changelog

Добавлено в версии 0.10.

Параметры

name (Optional[str]) – необязательное имя теста, в противном случае будет использовано имя функции.

Тип возвращаемого значения

Callable

app_url_defaults(f)

То же, что и url_defaults(), но для всего приложения.

Параметры

f (Callable[[str, dict], None]) –

Тип возвращаемого значения

Callable[[str, dict], None]

app_url_value_preprocessor(f)

То же, что и url_value_preprocessor(), но для всего приложения.

Параметры

f (Callable[[Optional[str], Optional[dict]], None]) –

Тип возвращаемого значения

Callable[[Optional[str], Optional[dict]], None]

before_app_first_request(f)

Подобно Flask.before_first_request(). Такая функция выполняется перед первым запросом к приложению.

Параметры

f (Callable[[], None]) –

Тип возвращаемого значения

Callable[[], None]

before_app_request(f)

Подобно Flask.before_request(). Такая функция выполняется перед каждым запросом, даже если она находится вне blueprint.

Параметры

f (Callable[[], None]) –

Тип возвращаемого значения

Callable[[], None]

before_request(f)

Регистрирует функцию для выполнения перед каждым запросом.

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

@app.before_request
def load_user():
    if "user_id" in session:
        g.user = db.session.get(session["user_id"])

Функция будет вызвана без каких-либо аргументов. Если она возвращает значение, отличное от None , значение обрабатывается так, как если бы это было возвращаемое значение представления, и дальнейшая обработка запроса останавливается.

Параметры

f (Callable[[], None]) –

Тип возвращаемого значения

Callable[[], None]

before_request_funcs: t.Dict[AppOrBlueprintKey, t.List[BeforeRequestCallable]]

Структура данных функций, которые вызываются в начале каждого запроса в формате {scope: [functions]}. Ключ scope — имя модуля, для которого активны функции, или None для всех запросов.

Для регистрации функции используйте декоратор before_request().

Эта структура данных внутренняя. Ее не следует изменять напрямую, и ее формат может быть изменен в любое время.

cli

Группа команд Click для регистрации команд командной строки для этого объекта. Команды доступны из команды flask после того, как приложение найдено, а модули зарегистрированы.

context_processor(f)

Регистрирует функцию процессора контекста шаблонов.

Параметры

f (Callable[[], Dict[str, Any]]) –

Тип возвращаемого значения

Callable[[], Dict[str, Any]]

delete(rule, **options)

Сокращение для route() с methods=["DELETE"].

Введено в версии 2.0.

Параметры
  • rule (str) –
  • options (Any) –
Тип возвращаемого значения

Callable

endpoint(endpoint)

Декорирует функцию представления для регистрации ее для заданного конечной точки. Используется, если правило добавлено без view_func с помощью add_url_rule().

app.add_url_rule("/ex", endpoint="example")

@app.endpoint("example")
def example():
    ...
Параметры

endpoint (str) – Имя конечной точки, которое необходимо ассоциировать с функцией представления.

Тип возвращаемого значения

Callable

error_handler_spec: t.Dict[AppOrBlueprintKey, t.Dict[t.Optional[int], t.Dict[t.Type[Exception], ErrorHandlerCallable]]]

Структура данных зарегистрированных обработчиков ошибок в формате {scope: {code: {class: handler}}}`. Ключ scope — имя модуля, для которого активны обработчики, или None для всех запросов. Ключ code — код HTTP-статуса для HTTPException, или None для других исключений. Внутренний словарь сопоставляет классы исключений с функциями-обработчиками.

Для регистрации обработчика ошибок используйте декоратор errorhandler().

Эта структура данных внутренняя. Ее не следует изменять напрямую, и ее формат может быть изменен в любое время.

errorhandler(code_or_exception)

Регистрирует функцию для обработки ошибок по коду или классу исключения.

Декоратор, используемый для регистрации функции, заданной кодом ошибки. Пример:

@app.errorhandler(404)
def page_not_found(error):
    return 'This page does not exist', 404

Также можно регистрировать обработчики для произвольных исключений:

@app.errorhandler(DatabaseError)
def special_exception_handler(error):
    return 'Database connection failed', 500
Журнал изменений

Введено в версии 0.7: Используйте register_error_handler() вместо изменения error_handler_spec напрямую для глобальных обработчиков ошибок.

Введено в версии 0.7: Теперь можно дополнительно регистрировать пользовательские типы исключений, которые необязательно должны быть подклассом класса HTTPException.

Параметры

code_or_exception (Union[Type[Exception], int]) – код в виде целого числа для обработчика или произвольное исключение

Тип возвращаемого значения

Callable

get(rule, **options)

Сокращение для route() с methods=["GET"].

Введено в версии 2.0.

Параметры
  • rule (str) –
  • options (Any) –
Тип возвращаемого значения

Callable

get_send_file_max_age(filename)

Используется функцией send_file() для определения значения кэширования max_age для данного пути к файлу, если оно не было передано.

По умолчанию возвращает SEND_FILE_MAX_AGE_DEFAULT из конфигурации current_app. По умолчанию это None, что сообщает браузеру использовать условные запросы вместо кэша с указанным временем, что обычно предпочтительнее.

Изменено в версии 2.0: Значение конфигурации по умолчанию — None вместо 12 часов.

Журнал изменений

Введено в версии 0.9.

Параметры

filename (str) –

Тип возвращаемого значения

Optional[int]

property has_static_folder: bool

True , если static_folder задано.

Журнал изменений

Введено в версии 0.5.

import_name

Имя пакета или модуля, к которому принадлежит этот объект. Не изменяйте его после его установки конструктором.

property jinja_loader: Optional[jinja2.loaders.FileSystemLoader]

Загрузчик Jinja для шаблонов этого объекта. По умолчанию это класс jinja2.loaders.FileSystemLoader для template_folder, если он задан.

Журнал изменений

Введено в версии 0.5.

json_decoder: Optional[Type[json.decoder.JSONDecoder]] = None

Локальный класс декодера JSON для модуля. Установлено в None для использования декодера приложения json_decoder.

json_encoder: Optional[Type[json.encoder.JSONEncoder]] = None

Класс локального кодировщика JSON для использования в Blueprint. Установлено в None для использования кодировщика приложения json_encoder.

make_setup_state(app, options, first_registration=False)

Создаёт экземпляр объекта BlueprintSetupState(), который позже передаётся в функции обратного вызова регистрации. Подклассы могут переопределять этот метод для возврата подкласса состояния настройки.

Параметры
  • app (Flask) –
  • options (dict) –
  • first_registration (bool) –
Тип возвращаемого значения

flask.blueprints.BlueprintSetupState

open_resource(resource, mode='rb')

Открывает файл ресурса относительно root_path для чтения.

Например, если файл schema.sql находится рядом с файлом app.py, где определено приложение Flask, его можно открыть так:

with app.open_resource("schema.sql") as f:
    conn.executescript(f.read())
Параметры
  • resource (str) – Путь к ресурсу относительно root_path.
  • mode (str) – Режим открытия файла. Поддерживается только чтение, допустимые значения «r» (или «rt») и «rb».
Тип возвращаемого значения

IO

patch(rule, **options)

Короткая форма для route() с methods=["PATCH"].

Добавлена в версии 2.0.

Параметры
  • rule (str) –
  • options (Any) –
Тип возвращаемого значения

Callable

post(rule, **options)

Короткая форма для route() с methods=["POST"].

Добавлена в версии 2.0.

Параметры
  • rule (str) –
  • options (Any) –
Тип возвращаемого значения

Callable

put(rule, **options)

Короткая форма для route() с methods=["PUT"].

Добавлена в версии 2.0.

Параметры
  • rule (str) –
  • options (Any) –
Тип возвращаемого значения

Callable

record(func)

Регистрирует функцию, которая вызывается при регистрации Blueprint в приложении. Эта функция вызывается со состоянием в качестве аргумента, возвращённым методом make_setup_state().

Параметры

func (Callable) –

Тип возвращаемого значения

None

record_once(func)

Работает как record(), но оборачивает функцию в другую функцию, которая гарантирует, что функция вызывается только один раз. Если Blueprint регистрируется во второй раз в приложении, переданная функция не вызывается.

Параметры

func (Callable) –

Тип возвращаемого значения

None

register(app, options)

Вызывается Flask.register_blueprint() для регистрации всех представлений и обратных вызовов, зарегистрированных в Blueprint, в приложении. Создаёт BlueprintSetupState и вызывает каждый обратный вызов record() с ним.

Параметры
  • app (Flask) – Приложение, с которым регистрируется Blueprint.
  • options (dict) – Аргументы ключевых слов, переданные из register_blueprint().
  • first_registration – Является ли это первой регистрацией Blueprint в приложении.
Тип возвращаемого значения

None

register_blueprint(blueprint, **options)

Регистрирует Blueprint в этом Blueprint. Аргументы ключевых слов, переданные в этот метод, переопределят значения по умолчанию, установленные в Blueprint.

Добавлена в версии 2.0.

Параметры
  • blueprint (flask.blueprints.Blueprint) –
  • options (Any) –
Тип возвращаемого значения

None

register_error_handler(code_or_exception, f)

Функция для добавления обработчика ошибок в дополнение к декоратору errorhandler(). Более проста в использовании без использования декораторов.

Changelog

Новая в версии 0.7.

Параметры
  • code_or_exception (Union[Type[Исключение], int]) –
  • f (Callable[[Исключение], Union[Ответ, AnyStr, Dict[str, Any], Generator[AnyStr, None, None], Tuple[Union[Ответ, AnyStr, Dict[str, Any], Generator[AnyStr, None, None]], int], Tuple[Union[Ответ, AnyStr, Dict[str, Any], Generator[AnyStr, None, None]], int, Union[Headers, Dict[str, Union[str, List[str], Tuple[str, ...]]], List[Tuple[str, Union[str, List[str], Tuple[str, ...]]]]]], WSGIApplication]]) –
Тип возвращаемого значения

None

root_path

Абсолютный путь к пакету в файловой системе. Используется для поиска ресурсов, содержащихся в пакете.

route(rule, **options)

Декорирует функцию представления для регистрации с заданным правилом URL и параметрами. Вызывает add_url_rule(), в котором содержится более подробная информация об реализации.

@app.route("/")
def index():
    return "Hello, World!"

См. Регистрации правил маршрутов URL.

Имя конечной точки для маршрута по умолчанию соответствует имени функции представления, если параметр endpoint не передан.

Параметр methods по умолчанию ["GET"]. HEAD и OPTIONS добавляются автоматически.

Параметры
  • rule (str) – Строка правила URL.
  • options (Any) – Дополнительные параметры, передаваемые объекту Rule.
Тип возвращаемого значения

Callable

send_static_file(filename)

Функция представления, используемая для предоставления файлов из static_folder. Маршрут для этого представления автоматически регистрируется по адресу static_url_path, если static_folder установлен.

Changelog

Новая в версии 0.5.

Параметры

filename (str) –

Тип возвращаемого значения

Ответ

property static_folder: Optional[str]

Абсолютный путь к папке со статическими файлами. None если папка со статическими файлами не задана.

property static_url_path: Optional[str]

Префикс URL, по которому будет доступен статический маршрут.

Если не был сконфигурирован при инициализации, выводится из static_folder.

teardown_app_request(f)

Подобно Flask.teardown_request(), но для схемы. Такая функция выполняется при разборке каждого запроса, даже если она находится вне схемы.

Параметры

f (Callable[[Optional[BaseException]], Response]) –

Тип возвращаемого значения

Callable[[Optional[BaseException]], Response]

teardown_request(f)

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

Пример:

ctx = app.test_request_context()
ctx.push()
...
ctx.pop()

Когда ctx.pop() выполняется в приведенном выше примере, функции разборки вызываются непосредственно перед тем, как контекст запроса перемещается из стека активных контекстов. Это становится актуальным, если вы используете такие конструкции в тестах.

Функции разборки должны избегать повышения исключений, так как они . Если они выполняют код, который может потерпеть неудачу, они должны будут обрамлять выполнение этого кода инструкциями try/except и регистрировать возникающие ошибки.

Когда функция разборки была вызвана из-за исключения, ей будет передан объект ошибки.

Значения возврата функций разборки игнорируются.

Debug Note

В режиме отладки Flask не будет сразу разбирать запрос при возникновении исключения. Вместо этого он сохранит его активным, чтобы интерактивный отладчик мог к нему обратиться. Это поведение можно контролировать с помощью переменной конфигурации PRESERVE_CONTEXT_ON_EXCEPTION.

Параметры

f (Callable[[Optional[BaseException]], Response]) –

Тип возвращаемого значения

Callable[[Optional[BaseException]], Response]

teardown_request_funcs: t.Dict[AppOrBlueprintKey, t.List[TeardownCallable]]

Структура данных функций, которые вызываются в конце каждого запроса, даже если возникло исключение, в формате {scope: [functions]}. Ключ scope — имя схемы, для которой активны функции, или None для всех запросов.

Для регистрации функции используйте декоратор teardown_request().

Эта структура данных внутренняя. Ее не следует изменять напрямую, и ее формат может измениться в любое время.

template_context_processors: t.Dict[AppOrBlueprintKey, t.List[TemplateContextProcessorCallable]]

Структура данных функций, которые вызываются для передачи дополнительных значений контекста при рендеринге шаблонов, в формате {scope: [functions]}. Ключ scope — имя схемы, для которой активны функции, или None для всех запросов.

Для регистрации функции используйте декоратор context_processor().

Эта структура данных внутренняя. Ее не следует изменять напрямую, и ее формат может измениться в любое время.

template_folder

Путь к папке с шаблонами, относительно root_path, для добавления в загрузчик шаблонов. None если шаблоны не должны добавляться.

url_default_functions: t.Dict[AppOrBlueprintKey, t.List[URLDefaultCallable]]

Структура данных функций, которые вызываются для изменения ключевых аргументов при генерации URL-адресов, в формате {scope: [functions]}. Ключ scope — имя схемы, для которой активны функции, или None для всех запросов.

Для регистрации функции используйте декоратор url_defaults().

Эта структура данных внутренняя. Ее не следует изменять напрямую, и ее формат может измениться в любое время.

url_defaults(f)

Функция обратного вызова для значений по умолчанию URL для всех функций представления приложения. Она вызывается с именем конечной точки и значениями и должна обновлять передаваемые значения на месте.

Параметры

f (Callable[[str, dict], None]) –

Тип возвращаемого значения

Callable[[str, dict], None]

url_value_preprocessor(f)

Регистрирует функцию предобработки значений URL для всех функций представления в приложении. Эти функции вызываются до функций before_request().

Функция может изменять значения, полученные из соответствующего URL, прежде чем они будут переданы в представление. Например, это можно использовать для извлечения общего кода языка и размещения его в g вместо передачи его каждой функции представления.

Функции передаются имя конечной точки и словарь значений. Значение возврата игнорируется.

Параметры

f (Callable[[Optional[str], Optional[dict]], None]) –

Тип возвращаемого значения

Callable[[Optional[str], Optional[dict]], None]

url_value_preprocessors: t.Dict[AppOrBlueprintKey, t.List[URLValuePreprocessorCallable]]

Структура данных функций, которые вызываются для изменения ключевых аргументов, передаваемых в функцию представления, в формате {scope: [functions]}. Ключ scope — имя схемы, для которой активны функции, или None для всех запросов.

Для регистрации функции используйте декоратор url_value_preprocessor().

Эта структура данных внутренняя. Ее не следует изменять напрямую, и ее формат может измениться в любое время.

view_functions: t.Dict[str, t.Callable]

Словарь, сопоставляющий имена конечных точек с функциями представлений.

Для регистрации функции представления используйте декоратор route().

Эта структура данных внутренняя. Ее не следует изменять напрямую, и ее формат может измениться в любое время.

Данные входящего запроса

class flask.Request(environ, populate_request=True, shallow=False)

Объект запроса, используемый по умолчанию в Flask. Запоминает сопоставленный конечный пункт и аргументы представления.

Он и является тем, что в итоге становится request. Если вы хотите заменить используемый объект запроса, вы можете создать подкласс этого и установить request_class на свой подкласс.

Объект запроса является подклассом Request и предоставляет все атрибуты, определённые Werkzeug, плюс несколько специфичных для Flask.

Параметры
  • environ (WSGIEnvironment) –
  • populate_request (bool) –
  • shallow (bool) –
Тип возвращаемого значения

None

property accept_charsets: werkzeug.datastructures.CharsetAccept

Список наборов символов, поддерживаемых этим клиентом, как объект CharsetAccept.

property accept_encodings: werkzeug.datastructures.Accept

Список кодировок, принимаемых этим клиентом. Кодировки в HTTP — это кодировки сжатия, такие как gzip. Для наборов символов см. accept_charset.

property accept_languages: werkzeug.datastructures.LanguageAccept

Список языков, принимаемых этим клиентом, как объект LanguageAccept.

property accept_mimetypes: werkzeug.datastructures.MIMEAccept

Список MIME-типов, поддерживаемых этим клиентом, как объект MIMEAccept.

access_control_request_headers

Отправляется с предварительным запросом, чтобы указать, какие заголовки будут отправлены с запросом к другому источнику. Установите access_control_allow_headers в ответе, чтобы указать разрешённые заголовки.

access_control_request_method

Отправляется с предварительным запросом, чтобы указать, какой метод будет использован для запроса к другому источнику. Установите access_control_allow_methods в ответе, чтобы указать разрешённые методы.

property access_route: List[str]

Если существует заголовок forwarded, это список всех адресов IP от клиента до последнего прокси-сервера.

classmethod application(f)

Декорирует функцию как обработчик, который принимает запрос в качестве последнего аргумента. Это работает как декор responder() , но функция получает объект запроса в качестве последнего аргумента, а объект запроса закрывается автоматически:

@Request.application
def my_wsgi_app(request):
    return Response('Hello World!')

Начиная с Werkzeug 0.14, HTTP-исключения автоматически перехватываются и преобразуются в ответы, вместо того, чтобы вызывать ошибку.

Параметры

f (Callable[[Request], WSGIApplication]) – вызываемый объект WSGI, подлежащий декорированию

Возвращаемое значение

новый вызываемый объект WSGI

Тип возвращаемого значения

WSGIApplication

property args: MultiDict[str, str]

Обработанные параметры URL (часть URL после вопросительного знака).

По умолчанию из этой функции возвращается ImmutableMultiDict. Это можно изменить, установив parameter_storage_class на другой тип. Это может потребоваться, если порядок данных формы важен.

property authorization: Optional[werkzeug.datastructures.Authorization]

Объект Authorization в обработанном виде.

property base_url: str

Как url, но без строки запроса.

property blueprint: Optional[str]

Имя текущего модуля.

property cache_control: werkzeug.datastructures.RequestCacheControl

Объект RequestCacheControl для заголовков кэширования входящего запроса.

close()

Закрывает связанные ресурсы этого объекта запроса. Закрывает все дескрипторы файлов явно. Вы также можете использовать объект запроса в блоке with, который автоматически его закроет.

Changelog

Новое в версии 0.9.

Тип возвращаемого значения

None

content_encoding

Поле заголовка сущности Content-Encoding используется как модификатор типа данных. Если оно присутствует, его значение указывает, какие дополнительные кодировки содержимого были применены к телу сущности, и, следовательно, какие механизмы декодирования должны быть применены для получения типа данных, указанного в заголовке Content-Type.

Changelog

Новое в версии 0.9.

property content_length: Optional[int]

Поле заголовка сущности Content-Length указывает размер тела сущности в байтах или, в случае метода HEAD, размер тела сущности, который был бы отправлен, если бы запрос был GET.

content_md5

Поле заголовка сущности Content-MD5, как определено в RFC 1864, представляет собой MD5-хеш тела сущности для проверки целостности сообщения сущности (MIC). (Примечание: MIC предназначен для обнаружения случайных изменений тела сущности во время передачи, но не является доказательством защиты от злонамеренных атак.)

Changelog

Новое в версии 0.9.

content_type

Поле заголовка сущности Content-Type указывает тип данных тела сущности, отправленного получателю, или, в случае метода HEAD, тип данных, который был бы отправлен, если бы запрос был GET.

property cookies: ImmutableMultiDict[str, str]

dict со всем содержимым cookie, переданных с запросом.

property data: bytes

Содержит входящие данные запроса в виде строки в случае, если они были переданы с типом данных, который Werkzeug не обрабатывает.

date

Поле заголовка Date представляет дату и время, в которые было отправлено сообщение, имея те же семантику, что и orig-date в RFC 822.

Изменено в версии 2.0: Объект datetime учитывает часовой пояс.

dict_storage_class

псевдоним для werkzeug.datastructures.ImmutableMultiDict

property endpoint: Optional[str]

Конечный пункт, сопоставленный с запросом. Это в сочетании с view_args может быть использовано для восстановления того же или изменённого URL. Если при сопоставлении произошла ошибка, это будет None.

environ: WSGIEnvironment

WSGI-среда, содержащая HTTP-заголовки и информацию от WSGI-сервера.

END_OF_DOCUMENT_MARKER
property files: ImmutableMultiDict[str, FileStorage]

MultiDict объект, содержащий все загруженные файлы. Каждый ключ в files — имя из <input type="file" name="">. Каждое значение в files — объект Werkzeug FileStorage.

По сути, он ведет себя как стандартный объект файла, известный вам из Python, с той разницей, что у него также есть функция save(), которая может сохранить файл на файловой системе.

Обратите внимание, что files будет содержать данные только в том случае, если метод запроса был POST, PUT или PATCH, и <form> , отправленный в запрос, содержал enctype="multipart/form-data". В противном случае он будет пустым.

Для получения дополнительной информации об используемой структуре данных см. документацию MultiDict / FileStorage.

property form: ImmutableMultiDict[str, str]

Параметры формы. По умолчанию из этой функции возвращается ImmutableMultiDict. Это можно изменить, установив parameter_storage_class на другой тип. Это может потребоваться, если порядок данных формы важен.

Пожалуйста, имейте в виду, что загрузки файлов не попадут сюда, а вместо этого в атрибут files.

Changelog

Изменено в версии 0.9: До версии Werkzeug 0.9 это содержало только данные формы для запросов POST и PUT.

form_data_parser_class

Псевдоним для werkzeug.formparser.FormDataParser.

classmethod from_values(*args, **kwargs)

Создать новый объект запроса на основе предоставленных значений. Если указан environ, пропущенные значения заполняются из него. Этот метод полезен для небольших скриптов, когда вам нужно смоделировать запрос из URL. Не используйте этот метод для тестирования, существует полный функциональный объект клиента (Client), который позволяет создавать multipart запросы, поддерживает куки и т.д.

Он принимает те же параметры, что и EnvironBuilder.

Changelog

Изменено в версии 0.5: Этот метод теперь принимает те же аргументы, что и EnvironBuilder. Из-за этого параметр environ теперь называется environ_overrides.

Возвращает

объект запроса

Параметры
  • args (Any) –
  • kwargs (Any) –
Тип возвращаемого значения

werkzeug.wrappers.request.Request

property full_path: str

Запрошенный путь, включая строку запроса.

get_data(cache=True, as_text=False, parse_form_data=False)

Это считывает буферизованные входные данные от клиента в один объект байтов. По умолчанию это кэшируется, но это поведение можно изменить, установив cache в False.

Как правило, не рекомендуется вызывать этот метод, не проверив сначала длину содержимого, так как клиент может отправить десятки мегабайтов или более, чтобы вызвать проблемы с памятью на сервере.

Обратите внимание, что если данные формы уже были обработаны, этот метод ничего не вернет, так как обработка данных формы не кэширует данные, как этот метод. Чтобы неявно вызвать функцию обработки данных формы, установите parse_form_data в True . Когда это сделано, значение, возвращаемое этим методом, будет пустой строкой, если обработчик формы обрабатывает данные. Как правило, это не нужно, так как если все данные кэшируются (что является по умолчанию), обработчик форм будет использовать кэшированные данные для обработки данных формы. Пожалуйста, в любом случае будьте внимательны и проверьте сначала длину содержимого, прежде чем вызывать этот метод, чтобы избежать исчерпания памяти сервера.

Если as_text установлено в True , возвращаемое значение будет декодированной строкой.

Changelog

Добавлена в версии 0.9.

Параметры
  • cache (bool) –
  • as_text (bool) –
  • parse_form_data (bool) –
Тип возвращаемого значения

Union[bytes, str]

get_json(force=False, silent=False, cache=True)

Обработать data как JSON.

Если тип MIME не указывает JSON (application/json, см. is_json()), это возвращает None.

Если обработка завершается неудачей, вызывается on_json_loading_failed(), и его возвращаемое значение используется как возвращаемое значение.

Параметры
  • force (bool) – Игнорировать тип MIME и всегда пытаться обработать JSON.
  • silent (bool) – Скрыть ошибки обработки и вернуть None вместо этого.
  • cache (bool) – Сохранить обработанный JSON для возврата при последующих вызовах.
Тип возвращаемого значения

Optional[Any]

headers

Заголовки, полученные вместе с запросом.

property host: str

Имя хоста, к которому был отправлен запрос, включая порт, если он нестандартный. Проверено с помощью trusted_hosts.

property host_url: str

Схема и хост URL запроса.

property if_match: werkzeug.datastructures.ETags

Объект, содержащий все теги в заголовке If-Match.

Тип возвращаемого значения

ETags

property if_modified_since: Optional[datetime.datetime]

Обработанный заголовок If-Modified-Since в качестве объекта datetime.

Изменено в версии 2.0: Объект datetime является часовым.

property if_none_match: werkzeug.datastructures.ETags

Объект, содержащий все теги в заголовке If-None-Match.

Тип возвращаемого значения

ETags

property if_range: werkzeug.datastructures.IfRange

Проанализированное заголовковое поле If-Range.

Изменено в версии 2.0: IfRange.date теперь учитывает часовой пояс.

Журнал изменений

Добавлен в версии 0.7.

property if_unmodified_since: Optional[datetime.datetime]

Проанализированное заголовковое поле If-Unmodified-Since в виде объекта datetime.

Изменено в версии 2.0: Объект datetime учитывает часовой пояс.

input_stream

Поток ввода WSGI.

В целом, использовать его не рекомендуется, так как можно легко прочитать данные за пределы границы. Используйте вместо этого stream.

property is_json: bool

Проверка, указывает ли MIME-тип на данные JSON, либо application/json, либо application/*+json.

is_multiprocess

Логическое значение, равное True, если приложение обслуживается сервером WSGI, запускающим несколько процессов.

is_multithread

Логическое значение, равное True, если приложение обслуживается многопоточным сервером WSGI.

is_run_once

Логическое значение, равное True, если приложение будет выполнено только один раз за время существования процесса. Это характерно для CGI, но не гарантируется, что выполнение произойдет только один раз.

property is_secure: bool

True , если запрос был выполнен с помощью защищенного протокола (HTTPS или WSS).

property json: Optional[Any]

Анализированные данные JSON, если mimetype указывает на JSON (application/json, см. is_json()).

Вызывает get_json() с аргументами по умолчанию.

list_storage_class

Псевдоним werkzeug.datastructures.ImmutableList

make_form_data_parser()

Создает парсер данных формы. Создаёт экземпляр form_data_parser_class с некоторыми параметрами.

Журнал изменений

Добавлен в версии 0.8.

Тип возвращаемого значения

werkzeug.formparser.FormDataParser

property max_content_length: Optional[int]

Только для чтения отображение параметра конфигурации MAX_CONTENT_LENGTH.

max_forwards

Поле заголовка запроса Max-Forwards предоставляет механизм с методами TRACE и OPTIONS для ограничения количества прокси или шлюзов, которые могут перенаправлять запрос следующему входящему серверу.

method

Метод, с помощью которого был выполнен запрос, например GET.

property mimetype: str

Аналогично content_type, но без параметров (например, без кодировки, типа и т. д.) и всегда в нижнем регистре. Например, если тип содержимого text/HTML; charset=utf-8 , то mimetype будет 'text/html'.

property mimetype_params: Dict[str, str]

Параметры mimetype в виде словаря. Например, если тип содержимого text/html; charset=utf-8 , то параметры будут {'charset': 'utf-8'}.

on_json_loading_failed(e)

Вызывается, если происходит ошибка при разборе get_json() и она не скрывается. Если этот метод возвращает значение, это значение используется в качестве значения возврата get_json(). По умолчанию генерируется исключение BadRequest.

Параметры

e (Исключение) –

Тип возвращаемого значения

NoReturn

origin

Хост, откуда исходит запрос. Установите access_control_allow_origin на ответе, чтобы указать разрешенные источники.

parameter_storage_class

Псевдоним werkzeug.datastructures.ImmutableMultiDict

path

Часть пути URL после root_path. Это путь, используемый для маршрутизации внутри приложения.

property pragma: werkzeug.datastructures.HeaderSet

Поле заголовка Pragma общего назначения используется для включения реализационно-специфичных директив, которые могут применяться к любому получателю по цепочке запрос/ответ. Все директивы pragma указывают на опциональное поведение с точки зрения протокола; однако, некоторые системы МОГУТ потребовать, чтобы поведение соответствовало этим директивам.

query_string

Часть URL после символа “?”. Это значение в сыром виде; используйте args для проанализированных значений.

property range: Optional[werkzeug.datastructures.Range]

Проанализированное заголовковое поле Range.

Журнал изменений

Добавлен в версии 0.7.

Тип возвращаемого значения

Range

referrer

Поле заголовка запроса Referer позволяет клиенту указать для сервера адрес (URI) ресурса, из которого был получен запрашиваемый URI ( «referrer», хотя в названии поля заголовка допущена ошибка).

remote_addr

Адрес клиента, отправившего запрос.

remote_user

Если сервер поддерживает аутентификацию пользователя и сценарий защищен, в этом атрибуте содержится имя пользователя, под которым пользователь прошел аутентификацию.

root_path

Префикс, под которым смонтировано приложение, без конечного слеша. path следует за этим.

property root_url: str

Схема URL, хост и корневой путь запроса. Это корень, с которого обращаются к приложению.

routing_exception: Optional[Exception] = None

Если сопоставление URL не удалось, это исключение будет сгенерировано / было сгенерировано в рамках обработки запроса. Обычно это исключение NotFound или что-то подобное.

scheme

Схема URL используемого протокола запроса, например https или wss.

property script_root: str

Псевдоним для self.root_path. environ["SCRIPT_ROOT"] без заключительного слэша.

server

Адрес сервера. (host, port), (path, None) для сокетов Unix или None в случае, если не известно.

shallow: bool

Устанавливается при создании объекта запроса. Если True, чтение из тела запроса вызовет RuntimeException. Полезно для предотвращения изменения потока из промежуточного программного обеспечения.

property stream: BinaryIO

Если входные данные формы не были закодированы с известным типом MIME, данные хранятся в этом потоке без изменений для обработки. В большинстве случаев лучше использовать data, который предоставит эти данные в виде строки. Поток возвращает данные только один раз.

В отличие от input_stream, этот поток должным образом защищён от случайного чтения за пределы длины входных данных. Werkzeug всегда обращается к этому потоку для чтения данных, что позволяет обернуть этот объект потоком, который выполняет фильтрацию.

Changelog

Изменено в версии 0.9: Этот поток теперь всегда доступен, но может быть обработан парсером формы позже. Ранее поток устанавливался только в случае отсутствия обработки.

property url: str

Полный URL запроса со схемой, хостом, корневым путём, путём и строкой запроса.

property url_charset: str

Кодировка символов, которая предполагается для URL. По умолчанию соответствует значению charset.

Changelog

Добавлена в версии 0.6.

property url_root: str

Псевдоним для root_url. URL со схемой, хостом и корневым путём. Например, https://example.com/app/.

url_rule: Optional[Rule] = None

Внутреннее правило URL, которое соответствовало запросу. Это может быть полезно для проверки разрешенных методов для URL из обработчика до/после (request.url_rule.methods) и т. д. Хотя, если метод запроса был недопустимым для правила URL, допустимый список доступен в routing_exception.valid_methods вместо этого (атрибут исключения Werkzeug MethodNotAllowed), так как запрос никогда не связывался внутренне.

Changelog

Добавлена в версии 0.6.

property user_agent: werkzeug.user_agent.UserAgent

Имя пользователя. Используйте user_agent.string для получения значения заголовка. Установите user_agent_class на подкласс UserAgent, чтобы обеспечить обработку других свойств или других расширенных данных.

Изменено в версии 2.0: Встроенный парсер устарел и будет удален в Werkzeug 2.1. Должен быть установлен подкласс UserAgent для обработки данных из строки.

user_agent_class

Псевдоним для werkzeug.useragents._UserAgent

property values: CombinedMultiDict[str, str]

werkzeug.datastructures.CombinedMultiDict, объединяющий args и form.

Для запросов GET присутствуют только args, а не form.

Изменено в версии 2.0: Для запросов GET присутствуют только args, а не form.

view_args: Optional[Dict[str, Any]] = None

Словарь аргументов представления, которые соответствовали запросу. Если при сопоставлении произошла ошибка, это будет None.

property want_form_data_parsed: bool

True если метод запроса передаёт содержимое. По умолчанию это истинно, если передаётся Content-Type.

Changelog

Добавлена в версии 0.8.

flask.request

Для доступа к данным входящего запроса можно использовать глобальный объект request. Flask парсит данные входящего запроса и предоставляет доступ к ним через этот глобальный объект. Внутренне Flask гарантирует, что вы всегда получаете правильные данные для активной нити, если вы находитесь в многопоточной среде.

Это прокси. Подробнее см. Примечания по прокси.

Объект запроса является экземпляром Request.

Объекты ответа

class flask.Response(response=None, status=None, headers=None, mimetype=None, content_type=None, direct_passthrough=False)

Объект ответа, используемый по умолчанию в Flask. Работает как объект ответа из Werkzeug, но по умолчанию имеет MIME-тип HTML. Часто вам не нужно создавать этот объект самостоятельно, так как make_response() позаботится об этом за вас.

Если вы хотите заменить используемый объект ответа, вы можете создать подкласс и установить response_class на ваш подкласс.

Изменения

Изменено в версии 1.0: Поддержка JSON добавлена в ответ, как и в запросе. Это полезно при тестировании для получения данных ответа тестового клиента в формате JSON.

Изменено в версии 1.0: Добавлен max_cookie_size.

Параметры
  • response (Union[Iterable[str], Iterable[bytes]]) –
  • status (Optional[Union[int, str, http.HTTPStatus]]) –
  • headers (werkzeug.datastructures.Headers) –
  • mimetype (Optional[str]) –
  • content_type (Optional[str]) –
  • direct_passthrough (bool) –
Тип возвращаемого значения

None

accept_ranges

Заголовок Accept-Ranges. Несмотря на то, что имя предполагает поддержку нескольких значений, допускается только один строковый токен.

Общие значения 'bytes' и 'none'.

Изменения

Впервые добавлено в версии 0.7.

property access_control_allow_credentials: bool

Разрешение браузеру обмениваться учетными данными с JavaScript-кодом. В рамках предварительного запроса указывается, можно ли использовать учетные данные при междоменном запросе.

access_control_allow_headers

Какие заголовки могут быть отправлены при междоменном запросе.

access_control_allow_methods

Какие методы можно использовать для междоменного запроса.

access_control_allow_origin

Происхождение или «*» для любого происхождения, которое может выполнять междоменные запросы.

access_control_expose_headers

Какие заголовки могут быть разделены браузером с JavaScript-кодом.

access_control_max_age

Максимальное время в секундах, в течение которого параметры управления доступом могут кешироваться.

add_etag(overwrite=False, weak=False)

Добавляет тег etag для текущего ответа, если его еще нет.

Изменено в версии 2.0: Для генерации значения используется SHA-1. MD5 может быть недоступен в некоторых средах.

Параметры
  • overwrite (bool) –
  • weak (bool) –
Тип возвращаемого значения

None

age

Поле заголовка ответа Age передает оценку отправителем времени, прошедшего с момента генерации ответа (или его перепроверки) на сервере происхождения.

Значения Age — это неотрицательные целые десятичные числа, представляющие время в секундах.

property allow: werkzeug.datastructures.HeaderSet

Поле сущности Allow перечисляет набор методов, поддерживаемых ресурсом, идентифицируемым Request-URI. Цель этого поля — строго информировать получателя о допустимых методах, связанных с ресурсом. Поле заголовка Allow ОБОЯЗАТЕЛЬНО должно присутствовать в ответе 405 (Метод не разрешен).

property cache_control: werkzeug.datastructures.ResponseCacheControl

Поле общего заголовка Cache-Control используется для указания директив, которые ОБЯЗАТЕЛЬНО должны соблюдаться всеми механизмами кэширования вдоль цепочки запроса/ответа.

calculate_content_length()

Возвращает длину содержимого, если она доступна, или None в противном случае.

Тип возвращаемого значения

Optional[int]

call_on_close(func)

Добавляет функцию в внутренний список функций, которые должны быть вызваны при закрытии ответа. Начиная с версии 0.7, эта функция также возвращает переданную функцию, что позволяет использовать ее в качестве декоратора.

Изменения

Впервые добавлено в версии 0.6.

Параметры

func (Callable[[], Any]) –

Тип возвращаемого значения

Callable[[], Any]

close()

Закрывает обернутый ответ, если это возможно. Также можно использовать объект в операторе with, что автоматически закроет его.

Изменения

Впервые добавлено в версии 0.9: Теперь можно использовать в операторе with.

Тип возвращаемого значения

None

content_encoding

Поле заголовка сущности Content-Encoding используется как модификатор MIME-типа. При его наличии значение указывает, какие дополнительные кодировки содержимого были применены к телу сущности, и, следовательно, какие механизмы декодирования необходимо применить для получения MIME-типа, указанного в поле заголовка Content-Type.

property content_language: werkzeug.datastructures.HeaderSet

Поле заголовка сущности Content-Language описывает естественный язык(и) целевой аудитории для включенной сущности. Обратите внимание, что это может не эквивалентно всем языкам, используемым в теле сущности.

content_length

Поле заголовка сущности Content-Length указывает размер тела сущности в десятичном числе октетов, отправленных получателю или, в случае метода HEAD, размер тела сущности, который был бы отправлен, если бы запрос был GET.

content_location

Поле заголовка сущности Content-Location МОЖЕТ использоваться для предоставления местоположения ресурса для сущности, включенной в сообщение, когда эта сущность доступна из местоположения, отличного от URI запрашиваемого ресурса.

content_md5

Поле заголовка сущности Content-MD5, как определено в RFC 1864, представляет собой MD5-хеш тела сущности для обеспечения проверки целостности сообщения (MIC) тела сущности от начала до конца. (Примечание: MIC полезен для обнаружения случайного изменения тела сущности во время передачи, но не является доказательством устойчивости к злонамеренным атакам.)

property content_range: werkzeug.datastructures.ContentRange

Заголовок Content-Range в виде объекта ContentRange. Доступен даже если заголовок не задан.

Changelog

Добавлен в версии 0.7.

content_security_policy

Заголовок Content-Security-Policy добавляет дополнительный уровень безопасности для обнаружения и смягчения определенных типов атак.

content_security_policy_report_only

Заголовок Content-Security-Policy-Report-Only добавляет политику csp, которая не применяется, но отчитывается, помогая обнаружить определенные типы атак.

content_type

Поле заголовка сущности Content-Type указывает тип носителя тела сущности, отправленного получателю, или, в случае метода HEAD, тип носителя, который был бы отправлен, если бы запрос был GET.

cross_origin_embedder_policy

Предотвращает загрузку документа любых ресурсов из другого источника, которые явно не предоставляют документу разрешение. Значения должны быть членом перечисления werkzeug.http.COEP.

cross_origin_opener_policy

Позволяет управлять совместным доступом к группе контекста просмотра с документами из других источников. Значения должны быть членом перечисления werkzeug.http.COOP.

property data: Union[bytes, str]

Дескриптор, который вызывает get_data() и set_data().

date

Поле заголовка Date обозначает дату и время, в которые было создано сообщение, имея те же семантические значения, что и orig-date в RFC 822.

Изменено в версии 2.0: Объект datetime учитывает часовой пояс.

delete_cookie(key, path='/', domain=None, secure=False, httponly=False, samesite=None)

Удаляет cookie. Не выдает ошибок, если ключ не существует.

Параметры
  • ключ (str) – ключ (имя) cookie для удаления.
  • путь (str) – если cookie ограничивался путем, путь необходимо указать здесь.
  • домен (Необязательно[str]) – если cookie ограничивался доменом, необходимо указать этот домен.
  • безопасный (bool) – Если True, cookie будет доступен только через HTTPS.
  • только_для_http (bool) – Запрещает доступ JavaScript к cookie.
  • samesite (Необязательно[str]) – Ограничивает область действия cookie только запросами «same-site».
Тип возвращаемого значения

None

direct_passthrough

Передает тело ответа напрямую как WSGI итератор. Это можно использовать, когда тело — двоичный файл или другой итератор байтов, чтобы пропустить некоторые ненужные проверки. Используйте send_file() вместо ручного задания этого параметра.

expires

Поле заголовка Expires указывает дату/время, после которого ответ считается устаревшим. Кэшированный элемент данных, устаревший после определенного времени, обычно не возвращается кэшем.

Изменено в версии 2.0: Объект datetime учитывает часовой пояс.

classmethod force_type(response, environ=None)

Принудительно указывает, что WSGI-ответ — это объект ответа текущего типа. Werkzeug будет использовать Response во многих ситуациях, таких как исключения. Если вы вызовете get_response() на исключении, вы получите обычный объект Response, даже если вы используете пользовательский подкласс.

Этот метод может принудительно задавать тип ответа, а также преобразовывать произвольные вызываемые WSGI в объекты ответов, если предоставлен environ:

# convert a Werkzeug response object into an instance of the
# MyResponseClass subclass.
response = MyResponseClass.force_type(response)

# convert any WSGI application into a response object
response = MyResponseClass.force_type(response, environ)

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

Помните, что это может изменить объекты ответов на месте, если это возможно!

Параметры
  • ответ (Response) – объект ответа или WSGI-приложение.
  • environ (Необязательно[WSGIEnvironment]) – объект WSGI-среды.
Возвращает

объект ответа.

Тип возвращаемого значения

Response

freeze(no_etag=None)

Подготавливает объект ответа для сериализации. Выполняет следующие действия:

  • Буферизует ответ в список, игнорируя implicity_sequence_conversion и direct_passthrough.
  • Устанавливает заголовок Content-Length.
  • Генерирует заголовок ETag , если он ещё не установлен.

Изменено в версии 2.0: Добавляется заголовок ETag, параметр no_etag устарел и будет удален в Werkzeug 2.1.

Changelog

Изменено в версии 0.6: Устанавливается заголовок Content-Length.

Параметры

no_etag (None) –

Тип возвращаемого значения

None

classmethod from_app(app, environ, buffered=False)

Создает новый объект ответа из выходных данных приложения. Лучше всего работает, если вы передаете приложение, которое всегда возвращает генератор. Иногда приложения могут использовать вызываемый write() , возвращаемый функцией start_response. Это пытается автоматически разрешить такие граничные случаи. Но если вы не получаете ожидаемого результата, нужно установить buffered в True, чтобы принудительно включить буферизацию.

Параметры
  • приложение (WSGIApplication) – WSGI-приложение для выполнения.
  • environ (WSGIEnvironment) – WSGI-среда для выполнения.
  • buffered (bool) – установить в True для принудительной буферизации.
Возвращает

объект ответа.

Тип возвращаемого значения

Response

get_app_iter(environ)

Возвращает итератор приложения для заданного environ. В зависимости от метода запроса и текущего кода состояния возвращаемое значение может быть пустым ответом, а не тем, которое извлекается из ответа.

Если метод запроса HEAD или код состояния находится в диапазоне, где спецификация HTTP требует пустого ответа, возвращается пустой итератор.

Changelog

Добавлен в версии 0.6.

Параметры

environ (WSGIEnvironment) – WSGI-среда запроса.

Возвращает

итератор ответа.

Тип возвращаемого значения

Iterable[bytes]

get_data(as_text=False)

Строковое представление тела ответа. При каждом вызове этого свойства итерируемый объект ответа кодируется и сжимается. Это может привести к нежелательному поведению при работе с большими данными.

Это поведение можно отключить, установив implicit_sequence_conversion в False.

Если as_text установлено в True, возвращаемое значение будет декодированной строкой.

Changelog

Добавлено в версии 0.9.

Параметры

as_text (bool) –

Тип возвращаемого значения

Union[bytes, str]

get_etag()

Возвращает кортеж в формате (etag, is_weak). Если ETag отсутствует, возвращаемое значение равно (None, None).

Тип возвращаемого значения

Union[Tuple[str, bool], Tuple[None, None]]

get_json(force=False, silent=False)

Парсинг data как JSON. Полезно при тестировании.

Если MIME-тип не указывает JSON (application/json, см. is_json()), возвращает None.

В отличие от Request.get_json(), результат не кэшируется.

Параметры
  • force (bool) – Игнорировать MIME-тип и всегда пытаться распарсить JSON.
  • silent (bool) – Умалчивать об ошибках парсинга и возвращать None вместо этого.
Тип возвращаемого значения

Optional[Any]

get_wsgi_headers(environ)

Автоматически вызывается непосредственно перед началом ответа и возвращает измененные заголовки для данной среды. Возвращает копию заголовков ответа с внесенными изменениями, если необходимо.

Например, заголовок расположения (если присутствует) объединяется с корневым URL среды. Также длина содержимого автоматически устанавливается в ноль для определенных кодов состояния.

Changelog

Изменено в версии 0.6: Ранее функция называлась fix_headers и изменяла объект ответа на месте. Также начиная с 0.6, IRIs в заголовках location и content-location обрабатываются должным образом.

Также начиная с 0.6, Werkzeug попытается установить длину содержимого, если сможет её определить самостоятельно. Это происходит, если все строки в итерируемом объекте ответа уже закодированы, и итерируемый объект буферизован.

Параметры

environ (WSGIEnvironment) – среда WSGI запроса.

Возвращает

возвращает новый объект Headers.

Тип возвращаемого значения

werkzeug.datastructures.Headers

get_wsgi_response(environ)

Возвращает конечный WSGI ответ как кортеж. Первый элемент кортежа — итератор приложения, второй — код состояния, а третий — список заголовков. Возвращаемый ответ создаётся специально для данной среды. Например, если метод запроса в среде WSGI равен 'HEAD', ответ будет пустым, и будут присутствовать только заголовки и код состояния.

Changelog

Добавлено в версии 0.6.

Параметры

environ (WSGIEnvironment) – среда WSGI запроса.

Возвращает

кортеж (app_iter, status, headers).

Тип возвращаемого значения

Tuple[Iterable[bytes], str, List[Tuple[str, str]]]

property is_json: bool

Проверка, указывает ли MIME-тип данные JSON, либо application/json, либо application/*+json.

property is_sequence: bool

Если итератор буферизован, это свойство будет True. Объект ответа будет считать итератор буферизованным, если атрибут response является списком или кортежем.

Changelog

Добавлено в версии 0.6.

property is_streamed: bool

Если ответ передаётся по потокам (ответ не является итерируемым объектом с информацией о длине), это свойство равно True. В этом случае передача по потокам означает, что нет информации о количестве итераций. Обычно это True если в объект ответа передаётся генератор.

Это полезно для проверки перед применением некоторого вида пост-фильтрации, которая не должна выполняться для потоковых ответов.

iter_encoded()

Итерация по закодированному ответу с кодировкой ответа. Если объект ответа вызывается как WSGI-приложение, возвращаемое значение этого метода используется как итератор приложения, если не был активирован direct_passthrough.

Тип возвращаемого значения

Iterator[bytes]

property json: Optional[Any]

Распарсированные данные JSON, если mimetype указывает на JSON (application/json, см. is_json()).

Вызывает get_json() с аргументами по умолчанию.

last_modified

Поле заголовка сущности Last-Modified указывает дату и время, в которые исходный сервер считает, что вариативная сущность была в последний раз изменена.

Изменено в версии 2.0: Объект datetime является часово-значимым.

location

Поле заголовка ответа Location используется для перенаправления получателя в местоположение, отличное от Request-URI, для завершения запроса или определения нового ресурса.

make_conditional(request_or_environ, accept_ranges=False, complete_length=None)

Устанавливает условность ответа относительно запроса. Этот метод лучше всего работает, если для ответа уже был определен тег. Метод add_etag может быть использован для этого. Если вызывается без тега, устанавливается только заголовок даты.

Не делает ничего, если метод запроса в запросе или среде окружения — не GET или HEAD.

Для оптимальной производительности при обработке запросов с диапазоном рекомендуется, чтобы ваш объект данных ответа реализовывал методы seekable, seek и tell, как описано в io.IOBase. Объекты, возвращаемые wrap_file(), автоматически реализуют эти методы.

Не удаляет тело ответа, поскольку функция __call__() автоматически делает это за нас.

Возвращает self, позволяя вам выполнить return resp.make_conditional(req), но изменяет объект на месте.

Параметры
  • request_or_environ (WSGIEnvironment) – объект запроса или среда WSGI, используемые для установления условности ответа.
  • accept_ranges (Union[bool, str]) – Этот параметр определяет значение заголовка Accept-Ranges. Если False (по умолчанию), заголовок не устанавливается. Если True, он будет установлен в значение "bytes". Если None, он будет установлен в значение "none". Если это строка, будет использовано это значение.
  • complete_length (Optional[int]) – Будет использоваться только в корректных запросах с диапазоном. Он установит значение полной длины Content-Range и вычислит фактическое значение Content-Length. Этот параметр обязателен для успешного выполнения запросов с диапазоном.
Возможные исключения

RequestedRangeNotSatisfiable, если заголовок Range не смог быть обработан или удовлетворён.

Тип возвращаемого значения

Response

Изменено в версии 2.0: Обработка диапазонов пропускается, если длина равна 0, вместо повышения ошибки 416 Range Not Satisfiable.

make_sequence()

Преобразует итератор ответа в список. По умолчанию это происходит автоматически, если необходимо. Если implicit_sequence_conversion отключен, этот метод не вызывается автоматически, и некоторые свойства могут вызывать исключения. Это также кодирует все элементы.

Changelog

Добавлен в версии 0.6.

Тип возвращаемого значения

None

property max_cookie_size: int

Только для чтения представление конфигурационного ключа MAX_COOKIE_SIZE.

См. max_cookie_size в документации Werkzeug.

property mimetype: Optional[str]

Тип MIME (тип содержимого без кодировки и т.д.).

property mimetype_params: Dict[str, str]

Параметры типа MIME в виде словаря. Например, если тип содержимого text/html; charset=utf-8, параметры будут {'charset': 'utf-8'}.

Changelog

Добавлен в версии 0.5.

property retry_after: Optional[datetime.datetime]

Поле заголовка ответа Retry-After может быть использовано с ответом 503 (Сервис недоступен) для указания того, как долго сервис, вероятно, будет недоступен для клиента, делающего запрос.

Время в секундах до истечения срока действия или дата.

Изменено в версии 2.0: Объект datetime имеет часовой пояс.

set_cookie(key, value='', max_age=None, expires=None, path='/', domain=None, secure=False, httponly=False, samesite=None)

Устанавливает cookie.

Если размер заголовка cookie превышает max_cookie_size, генерируется предупреждение, но заголовок всё равно устанавливается.

Параметры
  • key (str) – ключ (имя) устанавливаемого cookie.
  • value (str) – значение cookie.
  • max_age (Optional[Union[datetime.timedelta, int]]) – должно быть количеством секунд, или None (по умолчанию), если cookie должен действовать только в течение сессии браузера клиента.
  • expires (Optional[Union[str, datetime.datetime, int, float]]) – должен быть объектом datetime или временной меткой Unix.
  • path (Optional[str]) – ограничивает cookie заданным путем, по умолчанию он охватывает весь домен.
  • domain (Optional[str]) – если вы хотите установить cookie для другого домена. Например, domain=".example.com" установит cookie, доступный для домена www.example.com, foo.example.com и т.д. Иначе cookie будет доступен только для домена, который его установил.
  • secure (bool) – Если True, cookie будет доступен только через HTTPS.
  • httponly (bool) – Запрещает доступ JavaScript к cookie.
  • samesite (Optional[str]) – Ограничивает область действия cookie, чтобы он прикреплялся только к запросам «того же сайта».
Тип возвращаемого значения

None

set_data(value)

Устанавливает новую строку как ответ. Значение должно быть строкой или байтами. Если устанавливается строка, она кодируется в кодировке ответа (по умолчанию utf-8).

Changelog

Добавлен в версии 0.9.

Параметры

value (Union[bytes, str]) –

Тип возвращаемого значения

None

set_etag(etag, weak=False)

Установить тег и переопределить предыдущий, если он был.

Параметры
  • etag (str) –
  • weak (bool) –
Тип возвращаемого значения

None

property status: str

Код HTTP-статуса в виде строки.

property status_code: int

Код HTTP-статуса в виде числа.

property stream: werkzeug.wrappers.response.ResponseStream

Итерируемый объект ответа как поток только для записи.

property vary: werkzeug.datastructures.HeaderSet

Значение поля Vary указывает набор полей заголовков запроса, которые полностью определяют, может ли кеш использовать ответ для ответа на последующий запрос без повторной валидации, пока ответ свеж.

property www_authenticate: werkzeug.datastructures.WWWAuthenticate

Заголовок WWW-Authenticate в обработанном виде.

Сессии

Если вы установили Flask.secret_key (или настроите его из SECRET_KEY), вы можете использовать сессии в приложениях Flask. Сессия позволяет запоминать информацию от одного запроса к другому. Flask делает это с помощью подписанного cookie. Пользователь может просмотреть содержимое сессии, но не может его изменить, если не знает секретный ключ, поэтому убедитесь, что он сложный и не поддаётся угадыванию.

Для доступа к текущей сессии можно использовать объект session:

class flask.session

Объект сессии работает практически как обычный словарь, с той разницей, что он отслеживает изменения.

Это прокси. Смотрите Примечания по прокси для получения дополнительной информации.

Следующие атрибуты представляют интерес:

new

True если сессия новая, False в противном случае.

modified

True если объект сессии обнаружил изменение. Обратите внимание, что изменения в изменяемых структурах не подхватываются автоматически; в такой ситуации необходимо явным образом установить атрибут в True самостоятельно. Вот пример:

# this change is not picked up because a mutable object (here
# a list) is changed.
session['objects'].append(42)
# so mark it as modified yourself
session.modified = True
permanent

Если установлено в True, сессия действует в течение permanent_session_lifetime секунд. По умолчанию — 31 день. Если установлено в False (что является значением по умолчанию), сессия будет удалена при закрытии браузера пользователем.

Интерфейс сессии

Изменения

Новая функция версии 0.8.

Интерфейс сессии предоставляет простой способ заменить реализацию сессии, используемую Flask.

class flask.sessions.SessionInterface

Базовый интерфейс, который необходимо реализовать для замены стандартного интерфейса сессий, использующего реализацию securecookie от werkzeug. Единственными методами, которые необходимо реализовать, являются open_session() и save_session(). Остальные методы имеют удобные значения по умолчанию, которые не нужно изменять.

Объект сессии, возвращаемый методом open_session(), должен предоставлять интерфейс типа словаря, а также свойства и методы из SessionMixin. Рекомендуется просто наследовать от словаря dict и добавить этот миксин:

class Session(dict, SessionMixin):
    pass

Если метод open_session() возвращает None, Flask вызовет make_null_session() для создания сессии-замены, если поддержка сессий не может быть загружена из-за невыполнения каких-либо требований. По умолчанию созданный класс NullSession будет жаловаться на то, что секретный ключ не задан.

Чтобы заменить интерфейс сессий в приложении, достаточно присвоить значение flask.Flask.session_interface:

app = Flask(__name__)
app.session_interface = MySessionInterface()
Журнал изменений

Введено в версии 0.8.

get_cookie_domain(app)

Возвращает домен, который должен быть установлен для куки сессии.

Использует SESSION_COOKIE_DOMAIN, если он настроен, иначе возвращает домен, определённый на основе SERVER_NAME.

После определения (или если он вообще не задан), SESSION_COOKIE_DOMAIN обновляется, чтобы избежать повторного выполнения логики.

Параметры

app (Flask) –

Тип возвращаемого значения

Optional[str]

get_cookie_httponly(app)

Возвращает True, если куки сессии должна быть httponly. В данный момент просто возвращает значение конфигурационной переменной SESSION_COOKIE_HTTPONLY.

Параметры

app (Flask) –

Тип возвращаемого значения

bool

get_cookie_name(app)

Возвращает имя куки сессии.

Использует app.session_cookie_name, которое установлено в SESSION_COOKIE_NAME.

Параметры

app (Flask) –

Тип возвращаемого значения

str

get_cookie_path(app)

Возвращает путь, для которого куки должна быть действительна. Реализация по умолчанию использует значение из конфигурационной переменной SESSION_COOKIE_PATH , если она задана, в противном случае использует APPLICATION_ROOT или /, если None.

Параметры

app (Flask) –

Тип возвращаемого значения

str

get_cookie_samesite(app)

Возвращает 'Strict' или 'Lax', если куки должна использовать атрибут SameSite . В данный момент возвращает значение настройки SESSION_COOKIE_SAMESITE.

Параметры

app (Flask) –

Тип возвращаемого значения

str

get_cookie_secure(app)

Возвращает True, если куки должна быть защищённой. В данный момент возвращает значение настройки SESSION_COOKIE_SECURE.

Параметры

app (Flask) –

Тип возвращаемого значения

bool

get_expiration_time(app, session)

Вспомогательный метод, возвращающий дату истечения срока действия сессии или None, если сессия связана с сессией браузера. Реализация по умолчанию возвращает текущее время + время жизни постоянной сессии, настроенной в приложении.

Параметры
  • app (Flask) –
  • session (flask.sessions.SessionMixin) –
Тип возвращаемого значения

Optional[datetime.datetime]

is_null_session(obj)

Проверяет, является ли данный объект нулевой сессией. Нулевые сессии не требуют сохранения.

По умолчанию проверяет, является ли объект экземпляром null_session_class.

Параметры

obj (object) –

Тип возвращаемого значения

bool

make_null_session(app)

Создаёт нулевую сессию, которая выступает в качестве замены, если реальная поддержка сессий не может быть загружена из-за ошибки конфигурации. Это в основном помогает пользователю, потому что задача нулевой сессии - поддерживать поиск, не жалуясь, но изменения обрабатываются с помощью понятного сообщения об ошибке, что не удалось.

По умолчанию создаёт экземпляр null_session_class.

Параметры

app (Flask) –

Тип возвращаемого значения

flask.sessions.NullSession

null_session_class

make_null_session() будет искать здесь класс, который должен быть создан, когда запрашивается нулевая сессия. Аналогично метод is_null_session() будет выполнять проверку типа против этого типа.

Псевдоним flask.sessions.NullSession

open_session(app, request)

Этот метод должен быть реализован и должен возвращать None в случае, если загрузка не удалась из-за ошибки конфигурации, или экземпляр объекта сессии, который реализует интерфейс типа словаря + методы и атрибуты в SessionMixin.

Параметры
  • app (Flask) –
  • request (Request) –
Тип возвращаемого значения

Optional[flask.sessions.SessionMixin]

pickle_based = False

Флаг, указывающий, основан ли интерфейс сессии на пиклировании. Это может быть использовано расширениями Flask для принятия решения о том, как обращаться с объектом сессии.

Журнал изменений

Новая версия с 0.10.

save_session(app, session, response)

Вызывается для фактических сессий, возвращаемых open_session() в конце запроса. Это всё ещё вызывается в контексте запроса, поэтому, если вам абсолютно необходимо получить доступ к запросу, вы можете это сделать.

Параметры
  • app (Flask) –
  • session (flask.sessions.SessionMixin) –
  • response (Response) –
Тип возвращаемого значения

None

should_set_cookie(app, session)

Используется бэкендами сессий для определения, нужно ли устанавливать заголовок Set-Cookie для куки сессии для данного ответа. Если сессия была изменена, куки устанавливается. Если сессия постоянная и конфигурация SESSION_REFRESH_EACH_REQUEST имеет значение true, куки всегда устанавливается.

Эта проверка обычно пропускается, если сессия была удалена.

Журнал изменений

Новая версия с 0.11.

Параметры
  • app (Flask) –
  • session (flask.sessions.SessionMixin) –
Тип возвращаемого значения

bool

class flask.sessions.SecureCookieSessionInterface

По умолчанию интерфейс сессий, хранящий сессии в подписанных куках через модуль itsdangerous.

static digest_method()

Функция хеширования для подписи. По умолчанию sha1.

key_derivation = 'hmac'

Название поддерживаемого itsdangerous метода вывода ключа. По умолчанию hmac.

open_session(app, request)

Этот метод должен быть реализован и должен возвращать None в случае, если загрузка не удалась из-за ошибки конфигурации, или экземпляр объекта сессии, который реализует интерфейс типа словаря + методы и атрибуты в SessionMixin.

Параметры
  • app (Flask) –
  • request (Request) –
Тип возвращаемого значения

Optional[flask.sessions.SecureCookieSession]

salt = 'cookie-session'

соль, которая должна быть применена поверх секретного ключа для подписи сессий на основе куков.

save_session(app, session, response)

Вызывается для фактических сессий, возвращаемых open_session() в конце запроса. Это всё ещё вызывается в контексте запроса, поэтому, если вам абсолютно необходимо получить доступ к запросу, вы можете это сделать.

Параметры
  • app (Flask) –
  • session (flask.sessions.SessionMixin) –
  • response (Response) –
Тип возвращаемого значения

None

serializer = <flask.json.tag.TaggedJSONSerializer object>

Python-сериализатор для полезной нагрузки. По умолчанию используется компактный JSON-сериализатор с поддержкой некоторых дополнительных типов Python, таких как объекты datetime или кортежи.

session_class

Псевдоним для flask.sessions.SecureCookieSession

class flask.sessions.SecureCookieSession(initial=None)

Базовый класс для сессий, основанных на подписанных куках.

Этот бэкенд сессии установит атрибуты modified и accessed. Он не может надёжно отслеживать, является ли сессия новой (по сравнению с пустой), поэтому new остается жестко закодированным как False.

Параметры

initial (Any) –

Тип возвращаемого значения

None

accessed = False

заголовок, который позволяет прокси-серверам кэширования кэшировать различные страницы для разных пользователей.

get(key, default=None)

Возвращает значение для ключа, если ключ есть в словаре, иначе значение по умолчанию.

Параметры
  • key (str) –
  • default (Optional[Any]) –
Тип возвращаемого значения

Any

modified = False

Когда данные изменяются, это устанавливается в True. Отслеживается только сам словарь сессии; если сессия содержит изменяемые данные (например, вложенный словарь), то это значение должно быть установлено в True вручную при изменении этих данных. Куки сессии будут записаны в ответ только если это True.

setdefault(key, default=None)

Вставляет ключ со значением по умолчанию, если ключа нет в словаре.

Возвращает значение для ключа, если ключ есть в словаре, иначе значение по умолчанию.

Параметры
  • key (str) –
  • default (Optional[Any]) –
Тип возвращаемого значения

Any

class flask.sessions.NullSession(initial=None)

Класс, используемый для генерации более информативных сообщений об ошибках, если сеансы недоступны. По-прежнему позволяет читать данные из пустого сеанса, но не позволяет производить записи.

Параметры

initial (Любой тип) –

Тип возвращаемого значения

None

class flask.sessions.SessionMixin

Расширяет базовый словарь атрибутами сеанса.

accessed = True

Некоторые реализации могут определять, когда данные сеанса читаются или записываются, и устанавливать это значение в этом случае. Значение по умолчанию для миксина жёстко задано как True.

modified = True

Некоторые реализации могут определять изменения в сеансе и устанавливать это значение в этом случае. Значение по умолчанию для миксина жёстко задано как True.

property permanent: bool

Это отражает ключ '_permanent' в словаре.

Примчание

Ключ конфигурации PERMANENT_SESSION_LIFETIME также может быть целым числом начиная с Flask 0.8. Либо обработайте это сами, либо используйте атрибут permanent_session_lifetime в приложении, которое автоматически преобразует результат в целое число.

Тестовый клиент

class flask.testing.FlaskClient(*args, **kwargs)

Работает как обычный тестовый клиент Werkzeug, но имеет некоторое представление о том, как работает Flask, чтобы отложить очистку стека контекста запроса до конца тела with при использовании в with инструкции. Для общей информации о том, как использовать этот класс, см. werkzeug.test.Client.

Изменения

Изменено в версии 0.12: app.test_client() включает предварительно заданные значения по умолчанию для среды, которые можно установить после создания объекта app.test_client() в client.environ_base.

Основное использование описано в разделе Тестирование приложений Flask.

Параметры
  • args (Любой тип) –
  • kwargs (Любой тип) –
Тип возвращаемого значения

None

open(*args, as_tuple=False, buffered=False, follow_redirects=False, **kwargs)

Генерирует словарь environ из заданных аргументов, выполняет запрос к приложению с его использованием и возвращает ответ.

Параметры
  • args (Любой тип) – Передаётся в EnvironBuilder для создания environ для запроса. Если передан один аргумент, он может быть существующим EnvironBuilder или словарем environ.
  • buffered (bool) – Преобразуйте итератор, возвращаемый приложением, в список. Если у итератора есть метод close(), он вызывается автоматически.
  • follow_redirects (bool) – Выполняйте дополнительные запросы для следования перенаправлениям HTTP до тех пор, пока не будет возвращён статус, не являющийся перенаправлением. TestResponse.history отображает промежуточные ответы.
  • as_tuple (bool) –
  • kwargs (Любой тип) –
Тип возвращаемого значения

Ответ

Изменено в версии 2.0: as_tuple устарело и будет удалено в Werkzeug 2.1. Используйте TestResponse.request и request.environ вместо него.

Изменено в версии 2.0: Поток ввода запроса закрывается при вызове response.close(). Потоки ввода для перенаправлений закрываются автоматически.

Изменения

Изменено в версии 0.5: Если в словаре для параметра data указан словарь как файл, тип содержимого должен называться content_type вместо mimetype. Это изменение было внесено для согласованности с werkzeug.FileWrapper.

Изменено в версии 0.5: Добавлен параметр follow_redirects.

session_transaction(*args, **kwargs)

При использовании в сочетании с with инструкцией открывает транзакцию сеанса. Это можно использовать для изменения сеанса, используемого тестовым клиентом. После выхода из блока with сеанс сохраняется обратно.

with client.session_transaction() as session:
    session['value'] = 42

Внутренне это реализуется через временный контекст тестового запроса, и так как обработка сеансов может зависеть от переменных запроса, эта функция принимает те же аргументы, что и test_request_context(), которые передаются напрямую.

Параметры
  • args (Любой тип) –
  • kwargs (Любой тип) –
Тип возвращаемого значения

Генератор[flask.sessions.SessionMixin, None, None]

Запуск CLI-тестов

class flask.testing.FlaskCliRunner(app, **kwargs)

Клиент CliRunner для тестирования команд CLI приложения Flask. Обычно создаётся с помощью test_cli_runner(). См. Тестирование команд CLI.

Параметры
  • app (Flask) –
  • kwargs (Любой тип) –
Тип возвращаемого значения

None

invoke(cli=None, args=None, **kwargs)

Вызывает команду CLI в изолированной среде. См. CliRunner.invoke для полной документации метода. См. Тестирование команд CLI для примеров.

Если аргумент obj не задан, передаёт экземпляр ScriptInfo, который знает, как загрузить тестируемое приложение Flask.

Параметры
  • cli (Необязательно[Любой тип]) – Объект команды для вызова. По умолчанию используется группа cli приложения.
  • args (Необязательно[Любой тип]) – Список строк для вызова команды.
  • kwargs (Любой тип) –
Возвращает

объект Result.

Тип возвращаемого значения

Любой тип

Глобальные переменные приложения

Для совместного использования данных, применимых только к одному запросу, от одной функции к другой, глобальная переменная недостаточна, так как она нарушит работу в многопоточных средах. Flask предоставляет вам специальный объект, гарантирующий его применимость только к активному запросу и возвращающий разные значения для каждого запроса. Короче говоря: он делает всё правильно, как он это делает для request и session.

END_OF_DOCUMENT_MARKER
flask.g

Объект пространства имён, который может хранить данные во время контекста приложения контекста приложения. Это экземпляр Flask.app_ctx_globals_class, который по умолчанию равен ctx._AppCtxGlobals.

Это хорошее место для хранения ресурсов во время запроса. Во время тестирования вы можете использовать шаблон Имитация ресурсов и контекста для предварительной настройки таких ресурсов.

Это прокси. Смотрите Примечания по прокси для получения дополнительной информации.

Изменения

Изменено в версии 0.10: Связан с контекстом приложения, а не с контекстом запроса.

class flask.ctx._AppCtxGlobals

Простой объект. Используется в качестве пространства имён для хранения данных во время контекста приложения.

Создание контекста приложения автоматически создаёт этот объект, который доступен как прокси g.

'key' in g

Проверка наличия атрибута.

Изменения

Новое в версии 0.10.

iter(g)

Возвращает итератор по именам атрибутов.

Изменения

Новое в версии 0.10.

get(name, default=None)

Получение атрибута по имени или значения по умолчанию. Подобно dict.get().

Параметры
  • name (str) – Имя атрибута для получения.
  • default (Необязательно[Любой]) – Значение, которое будет возвращено, если атрибут отсутствует.
Тип возвращаемого значения

Любой

Изменения

Новое в версии 0.10.

pop(name, default=<object object>)

Получение и удаление атрибута по имени. Подобно dict.pop().

Параметры
  • name (str) – Имя атрибута для удаления.
  • default (Любой) – Значение, которое будет возвращено, если атрибут отсутствует, вместо возбуждения KeyError.
Тип возвращаемого значения

Любой

Изменения

Новое в версии 0.11.

setdefault(name, default=None)

Получение значения атрибута, если оно присутствует, в противном случае установить и вернуть значение по умолчанию. Подобно dict.setdefault().

Параметры
  • name (str) – Имя атрибута для получения.
  • default (Необязательно[Любой]) – Значение, которое будет установлено и возвращено, если атрибут отсутствует.
Тип возвращаемого значения

Любой

Изменения

Новое в версии 0.11.

Полезные функции и классы

flask.current_app

Прокси к приложению, обрабатывающему текущий запрос. Это полезно для доступа к приложению без необходимости импорта или если его нельзя импортировать, например, при использовании шаблона фабрики приложения или в планах и расширениях.

Доступен только при наличии контекста приложения. Это происходит автоматически во время запросов и команд CLI. Он может быть управляем вручную с помощью app_context().

Это прокси. Смотрите Примечания по прокси для получения дополнительной информации.

flask.has_request_context()

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

class User(db.Model):

    def __init__(self, username, remote_addr=None):
        self.username = username
        if remote_addr is None and has_request_context():
            remote_addr = request.remote_addr
        self.remote_addr = remote_addr

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

class User(db.Model):

    def __init__(self, username, remote_addr=None):
        self.username = username
        if remote_addr is None and request:
            remote_addr = request.remote_addr
        self.remote_addr = remote_addr
Изменения

Новое в версии 0.7.

Тип возвращаемого значения

bool

flask.copy_current_request_context(f)

Вспомогательная функция, которая декорирует функцию для сохранения текущего контекста запроса. Это полезно при работе с greenlets. В момент декорирования функции создаётся копия контекста запроса, а затем он добавляется при вызове функции. Текущая сессия также включена в скопированный контекст запроса.

Пример:

import gevent
from flask import copy_current_request_context

@app.route('/')
def index():
    @copy_current_request_context
    def do_some_work():
        # do some work here, it can access flask.request or
        # flask.session like you would otherwise in the view function.
        ...
    gevent.spawn(do_some_work)
    return 'Regular response'
Изменения

Новое в версии 0.10.

Параметры

f (Callable) –

Тип возвращаемого значения

Callable

flask.has_app_context()

Работает как has_request_context(), но для контекста приложения. Также можно просто проверить булево значение объекта current_app.

Изменения

Новое в версии 0.9.

Тип возвращаемого значения

bool

flask.url_for(endpoint, **values)

Генерирует URL для заданного конечной точки с указанным методом.

Переменные аргументы, неизвестные целевой конечной точке, добавляются в сгенерированный URL в качестве параметров запроса. Если значение параметра запроса равно None, вся пара пропускается. В случае активных Blueprint'ов вы можете сократить ссылки на тот же Blueprint, добавив точку перед локальной конечной точкой (.).

Это сослаться на функцию index, локальную для текущего Blueprint:

url_for('.index')

См. Строительство URL.

Значения конфигурации APPLICATION_ROOT и SERVER_NAME используются только при генерации URL вне контекста запроса.

Для интеграции приложений, Flask имеет обработчик для перехвата ошибок при построении URL через Flask.url_build_error_handlers. Функция url_for возвращает BuildError, когда текущее приложение не имеет URL для заданной конечной точки и значений. Если есть, current_app вызывает url_build_error_handlers, если это не None, которое может вернуть строку для использования в качестве результата url_for (вместо того, чтобы url_for по умолчанию поднимал исключение BuildError) или повторно поднять исключение. Пример:

def external_url_handler(error, endpoint, values):
    "Looks up an external URL when `url_for` cannot build a URL."
    # This is an example of hooking the build_error_handler.
    # Here, lookup_url is some utility function you've built
    # which looks up the endpoint in some external URL registry.
    url = lookup_url(endpoint, **values)
    if url is None:
        # External lookup did not have a URL.
        # Re-raise the BuildError, in context of original traceback.
        exc_type, exc_value, tb = sys.exc_info()
        if exc_value is error:
            raise exc_type(exc_value).with_traceback(tb)
        else:
            raise error
    # url_for will use this result, instead of raising BuildError.
    return url

app.url_build_error_handlers.append(external_url_handler)

Здесь, error — экземпляр BuildError, а endpoint и values — аргументы, переданные в url_for. Обратите внимание, что это для построения URL вне текущего приложения, а не для обработки ошибок 404 NotFound.

Изменения

В версии 0.10: Добавлен параметр _scheme.

В версии 0.9: Добавлены параметры _anchor и _method.

В версии 0.9: Вызывает Flask.handle_build_error() в BuildError.

Параметры
  • endpoint (str) – конечная точка URL (имя функции)
  • values (Any) – переменные аргументы правила URL
  • _external – если установлено в True, генерируется абсолютный URL. Адрес сервера можно изменить через переменную конфигурации SERVER_NAME, которая использует Host заголовок, затем IP и порт запроса.
  • _scheme – строка, определяющая желаемый схему URL. Параметр _external должен быть установлен в True или возникает ValueError. По умолчанию используется схема текущего запроса или PREFERRED_URL_SCHEME, если контекст запроса недоступен. Также можно установить в пустую строку для построения URL с относительным протоколом.
  • _anchor – если указано, добавляется в качестве якоря к URL.
  • _method – если указано, явно задает HTTP-метод.
Тип возвращаемого значения

str

flask.abort(status, *args, **kwargs)

Вызывает HTTPException для заданного кода состояния или WSGI-приложения.

Если задан код состояния, будет произведен поиск соответствующего исключения. Если передано WSGI-приложение, оно будет обернуто в исключение прокси WSGI и вызвано:

abort(404)  # 404 Not Found
abort(Response('Hello World'))
Параметры
  • status (Union[int, Response]) –
  • args (Any) –
  • kwargs (Any) –
Тип возвращаемого значения

NoReturn

flask.redirect(location, code=302, Response=None)

Возвращает объект ответа (WSGI-приложение), который, при вызове, перенаправляет клиента на целевое местоположение. Поддерживаются коды 301, 302, 303, 305, 307 и 308. 300 не поддерживается, так как это не настоящее перенаправление, а 304, так как это ответ на запрос с определёнными заголовками If-Modified-Since.

Изменения

В версии 0.10: Теперь можно передавать класс, используемый для объекта Response.

В версии 0.6: Теперь местоположение может быть строкой Unicode, которая кодируется с помощью функции iri_to_uri().

Параметры
  • location (str) – местоположение, на которое должен перенаправить ответ.
  • code (int) – код состояния перенаправления. По умолчанию 302.
  • Response (class) – класс Response для использования при создании ответа. По умолчанию werkzeug.wrappers.Response, если не указано.
Тип возвращаемого значения

Response

flask.make_response(*args)

Иногда необходимо задать дополнительные заголовки в представлении. Так как представления не обязательно должны возвращать объекты ответа, а могут возвращать значение, которое Flask преобразует в объект ответа, становится сложно добавлять заголовки к нему. Эту функцию можно вызвать вместо возвращаемого значения, и вы получите объект ответа, к которому вы можете добавить заголовки.

Если представление выглядит так, и вы хотите добавить новый заголовок:

def index():
    return render_template('index.html', foo=42)

Теперь вы можете сделать что-то вроде этого:

def index():
    response = make_response(render_template('index.html', foo=42))
    response.headers['X-Parachutes'] = 'parachutes are cool'
    return response

Эта функция принимает те же самые аргументы, которые можно вернуть из функции представления. Например, это создаёт ответ с кодом ошибки 404:

response = make_response(render_template('not_found.html'), 404)

Другой случай использования этой функции — принудительно преобразовать возвращаемое значение функции представления в ответ, что полезно с декораторами представлений:

response = make_response(view_function())
response.headers['X-Parachutes'] = 'parachutes are cool'

Внутренне эта функция делает следующее:

  • если не переданы аргументы, создаётся новый объект ответа
  • если передан один аргумент, вызывается flask.Flask.make_response() с ним
  • если передано более одного аргумента, аргументы передаются функции flask.Flask.make_response() в виде кортежа.
Изменения

В версии 0.6.

Параметры

args (Any) –

Тип возвращаемого значения

Response

flask.after_this_request(f)

Выполняет функцию после этого запроса. Это полезно для изменения объектов ответа. Функция получает объект ответа и должна вернуть тот же или новый.

Пример:

@app.route('/')
def index():
    @after_this_request
    def add_header(response):
        response.headers['X-Foo'] = 'Parachute'
        return response
    return 'Hello World!'

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

Изменения

В версии 0.9.

Параметры

f (Callable[[Response], Response]) –

Тип возвращаемого значения

Callable[[Response], Response]

flask.send_file(path_or_file, mimetype=None, as_attachment=False, download_name=None, attachment_filename=None, conditional=True, etag=True, add_etags=None, last_modified=None, max_age=None, cache_timeout=None)

Отправка содержимого файла клиенту.

Первый аргумент может быть путем к файлу или объектом, подобным файлу. Пути предпочтительны в большинстве случаев, потому что Werkzeug может управлять файлом и получать дополнительную информацию из пути. Передача объекта, подобного файлу, требует, чтобы файл был открыт в двоичном режиме, и это в основном полезно при создании файла в памяти с помощью io.BytesIO.

Никогда не передавайте пути к файлам, предоставленные пользователем. Предполагается, что путь является доверенным, поэтому пользователь может создать путь для доступа к файлу, который вы не имели в виду. Используйте send_from_directory(), чтобы безопасно обслуживать запрошенные пользователем пути из каталога.

Если WSGI-сервер устанавливает file_wrapper в environ, он используется, в противном случае используется встроенный оболочка Werkzeug. В качестве альтернативы, если HTTP-сервер поддерживает X-Sendfile, настройка Flask с помощью USE_X_SENDFILE = True сообщит серверу о необходимости отправки указанного пути, что намного эффективнее, чем чтение его в Python.

Параметры
  • path_or_file – Путь к файлу для отправки, относительный к текущему рабочему каталогу, если указан относительный путь. В качестве альтернативы, объект, подобный файлу, открытый в двоичном режиме. Убедитесь, что указатель файла установлен в начало данных.
  • mimetype – Тип MIME для отправки файла. Если не указано, он будет пытаться определить его по имени файла.
  • as_attachment – Указывает браузеру, что он должен предложить сохранить файл вместо отображения его.
  • download_name – Имя по умолчанию, которое браузеры будут использовать при сохранении файла. По умолчанию используется переданное имя файла.
  • conditional – Включить условные и диапазонные ответы на основе заголовков запроса. Требует передачи пути к файлу и environ.
  • etag – Вычислить ETag для файла, что требует передачи пути к файлу. Также может быть строкой для использования вместо этого.
  • last_modified – Время последнего изменения для отправки файла в секундах. Если не указано, оно будет пытаться определить его по пути к файлу.
  • max_age – Время, в секундах, в течение которого клиент должен кэшировать файл. Если установлено, Cache-Control будет public, в противном случае он будет no-cache для предпочтительного условного кэширования.

Изменено в версии 2.0: download_name заменяет параметр attachment_filename. Если as_attachment=False, он передается с Content-Disposition: inline вместо этого.

Изменено в версии 2.0: max_age заменяет параметр cache_timeout. conditional включено, а max_age не задано по умолчанию.

Изменено в версии 2.0: etag заменяет параметр add_etags. Он может быть строкой для использования вместо генерации.

Изменено в версии 2.0: Передача объекта, подобного файлу, который наследуется от TextIOBase, вызовет ValueError вместо отправки пустого файла.

Добавлена в версии 2.0: Реализация перемещена в Werkzeug. Теперь это обертка для передачи некоторых аргументов, специфичных для Flask.

Изменения

Изменено в версии 1.1: filename может быть объектом PathLike.

Изменено в версии 1.1: Передача объекта BytesIO поддерживает запросы диапазона.

Изменено в версии 1.0.3: Имена файлов кодируются с помощью ASCII вместо Latin-1 для более широкой совместимости с WSGI-серверами.

Изменено в версии 1.0: Поддерживаются имена файлов UTF-8, как указано в RFC 2231.

Изменено в версии 0.12: Имя файла больше не определяется автоматически из объектов файлов. Если вы хотите использовать автоматическую поддержку MIME и etag, передайте имя файла через filename_or_fp или attachment_filename.

Изменено в версии 0.12: attachment_filename предпочтительнее filename для определения MIME.

Изменено в версии 0.9: cache_timeout по умолчанию равно Flask.get_send_file_max_age().

Изменено в версии 0.7: Предварительный просмотр MIME и поддержка etag для объектов, подобных файлам, были устаревши, так как были ненадежными. Передайте имя файла, если это возможно, в противном случае укажите Etag самостоятельно.

Изменено в версии 0.5: Были добавлены параметры add_etags, cache_timeout и conditional. По умолчанию добавляются etag.

Новая в версии 0.2.

flask.send_from_directory(directory, path, filename=None, **kwargs)

Отправка файла из каталога с помощью send_file().

@app.route("/uploads/<path:name>")
def download_file(name):
    return send_from_directory(
        app.config['UPLOAD_FOLDER'], name, as_attachment=True
    )

Это безопасный способ отправки файлов из папки, например, статических файлов или загрузок. Использует safe_join(), чтобы убедиться, что путь, полученный от клиента, не создан злонамеренно для указания на область за пределами заданного каталога.

Если конечный путь не указывает на существующий обычный файл, генерируется ошибка 404 NotFound.

Параметры
  • directory (str) – Каталог, в котором path должен находиться.
  • path (str) – Путь к файлу для отправки, относительный к directory.
  • kwargs (Any) – Аргументы для передачи в send_file().
  • filename (Optional[str]) –
Тип возвращаемого значения

Response

Изменено в версии 2.0: path заменяет параметр filename.

Добавлена в версии 2.0: Реализация перемещена в Werkzeug. Теперь это обертка для передачи некоторых аргументов, специфичных для Flask.

Изменения

Новая в версии 0.5.

flask.safe_join(directory, *pathnames)

Безопасное объединение нуля или более компонентов пути, не являющихся доверенными, с базовым каталогом, чтобы избежать выхода за пределы базового каталога.

Параметры
  • directory (str) – Доверенный базовый каталог.
  • pathnames (str) – Недоверенные компоненты пути, относительные к базовому каталогу.
Возвращает

Безопасный путь, в противном случае None.

Тип возвращаемого значения

str

flask.escape()

Замена символов &, <, >, ', и " в строке на безопасные для HTML последовательности. Используйте эту функцию, если вам нужно отобразить текст, который может содержать такие символы в HTML.

Если у объекта есть метод __html__, он вызывается, и возвращаемое значение предполагается уже безопасным для HTML.

Параметры

s – Объект, который необходимо преобразовать в строку и экранировать.

Возвращает

Строка Markup с экранированным текстом.

class flask.Markup(base='', encoding=None, errors='strict')

Строка, готовая к безопасному вставлению в HTML- или XML-документ, либо потому, что она была экранирована, либо потому, что была помечена как безопасная.

Передача объекта конструктору преобразует его в текст и оборачивает его, отмечая как безопасный без экранирования. Для экранирования текста используйте метод класса escape() вместо этого.

>>> Markup("Hello, <em>World</em>!")
Markup('Hello, <em>World</em>!')
>>> Markup(42)
Markup('42')
>>> Markup.escape("Hello, <em>World</em>!")
Markup('Hello &lt;em&gt;World&lt;/em&gt;!')

Реализует интерфейс __html__(), который используют некоторые фреймворки. Передача объекта, реализующего __html__(), обернёт результат этого метода, отметив его как безопасный.

>>> class Foo:
...     def __html__(self):
...         return '<a href="/foo">foo</a>'
...
>>> Markup(Foo())
Markup('<a href="/foo">foo</a>')

Является подклассом str. Он имеет те же методы, но экранирует их аргументы и возвращает экземпляр Markup.

>>> Markup("<em>%s</em>") % ("foo & bar",)
Markup('<em>foo &amp; bar</em>')
>>> Markup("<em>Hello</em> ") + "<foo>"
Markup('<em>Hello</em> &lt;foo&gt;')
Параметры
  • base (Any) –
  • encoding (Optional[str]) –
  • errors (str) –
Тип возвращаемого значения

Markup

classmethod escape(s)

Экранировать строку. Вызывает escape() и гарантирует, что для подклассов возвращается правильный тип.

Параметры

s (Any) –

Тип возвращаемого значения

markupsafe.Markup

striptags()

Разархивировать разметку, удалить теги и нормализовать пробелы до одиночных пробелов.

>>> Markup("Main &raquo;        <em>About</em>").striptags()
'Main » About'
Тип возвращаемого значения

str

unescape()

Преобразовать экранированную разметку обратно в строку текста. Это заменяет HTML-сущности соответствующими символами.

>>> Markup("Main &raquo; <em>About</em>").unescape()
'Main » <em>About</em>'
Тип возвращаемого значения

str

Высвечивание сообщений

flask.flash(message, category='message')

Выводит сообщение на следующий запрос. Для удаления сохранённого сообщения из сессии и отображения его пользователю, шаблон должен вызвать get_flashed_messages().

Журнал изменений

Изменено в версии 0.3: category параметр добавлен.

Параметры
  • message (str) – сообщение, которое нужно вывести.
  • category (str) – категория сообщения. Рекомендованы следующие значения: 'message' для любых сообщений, 'error' для ошибок, 'info' для информационных сообщений и 'warning' для предупреждений. Однако, в качестве категории можно использовать любую строку.
Тип возвращаемого значения

None

flask.get_flashed_messages(with_categories=False, category_filter=())

Извлекает все сохраненные сообщения из сессии и возвращает их. Дальнейшие вызовы функции в рамках одного запроса вернут те же сообщения. По умолчанию возвращаются только сообщения, но когда with_categories установлено в True, значение возврата будет списком кортежей в формате (category, message) вместо этого.

Фильтруйте сохраненные сообщения по одной или нескольким категориям, указав эти категории в category_filter. Это позволяет отображать категории в отдельных блоках html. Параметры with_categories и category_filter отличаются:

  • with_categories определяет, возвращаются ли категории вместе с текстом сообщения (True возвращает кортеж, где False возвращает только текст сообщения).
  • category_filter фильтрует сообщения, возвращая только те, которые соответствуют заданным категориям.

См. Высвечивание сообщений для примеров.

Журнал изменений

Изменено в версии 0.9: category_filter параметр добавлен.

Изменено в версии 0.3: with_categories параметр добавлен.

Параметры
  • with_categories (bool) – установите в True для получения категорий.
  • category_filter (Iterable[str]) – фильтр категорий для ограничения возвращаемых значений. Будут возвращены только категории из списка.
Тип возвращаемого значения

Union[List[str], List[Tuple[str, str]]]

Поддержка JSON

Flask использует встроенный модуль json для обработки JSON. Он будет использовать текущий синтаксический анализатор или кодировщик JSON приложения для более лёгкой настройки. По умолчанию он обрабатывает некоторые дополнительные типы данных:

  • datetime.datetime и datetime.date сериализуются в строки RFC 822. Это совпадает с форматом даты HTTP.
  • uuid.UUID сериализуется в строку.
  • dataclasses.dataclass передаётся в dataclasses.asdict().
  • Markup (или любой объект с методом __html__) вызовет метод __html__ для получения строки.

Фильтр Jinja |tojson настроен на использование функции Flask dumps(). Фильтр автоматически отмечает вывод как |safe. Используйте фильтр для рендеринга данных внутри тегов <script>.

<script type=text/javascript>
    const names = {{ names|tosjon }};
    renderChart(names, {{ axis_data|tojson }});
</script>
flask.json.jsonify(*args, **kwargs)

Сериализуйте данные в JSON и оберните их в Response с mimetype application/json.

Использует dumps() для сериализации данных, но args и kwargs обрабатываются как данные, а не аргументы для json.dumps().

  1. Один аргумент: обрабатывается как единственное значение.
  2. Несколько аргументов: обрабатываются как список значений. jsonify(1, 2, 3) эквивалентно jsonify([1, 2, 3]).
  3. Аргументы с именами: обрабатываются как словарь значений. jsonify(data=data, errors=errors) эквивалентно jsonify({"data": data, "errors": errors}).
  4. Передача как аргументов, так и аргументов с именами не допускается, так как неясно, что должно произойти.
from flask import jsonify

@app.route("/users/me")
def get_current_user():
    return jsonify(
        username=g.user.username,
        email=g.user.email,
        id=g.user.id,
    )

Возвратит ответ JSON, подобный этому:

{
  "username": "admin",
  "email": "admin@localhost",
  "id": 42
}

Вывод по умолчанию опускает отступы и пробелы после разделителей. В режиме отладки или если JSONIFY_PRETTYPRINT_REGULAR равно True, вывод будет отформатирован для лучшей читаемости.

Changelog

Изменено в версии 0.11: Добавлена поддержка сериализации массивов верхнего уровня. Это создает риск безопасности в старых браузерах. См. Безопасность JSON.

Добавлен в версии 0.2.

Parameters
  • args (Any) –
  • kwargs (Any) –
Return type

Response

flask.json.dumps(obj, app=None, **kwargs)

Сериализует объект в строку JSON.

Принимает те же аргументы, что и встроенная функция json.dumps(), с некоторыми значениями по умолчанию из конфигурации приложения.

Parameters
  • obj (Any) – Объект для сериализации в JSON.
  • app (Optional[Flask]) – Используйте конфигурацию этого приложения вместо активного контекста приложения или значений по умолчанию.
  • kwargs (Any) – Дополнительные аргументы, передаваемые json.dumps().
Return type

str

Изменено в версии 2.0: encoding устарело и будет удалено в Flask 2.1.

Changelog

Изменено в версии 1.0.3: app может быть передан напрямую, а не требует контекста приложения для настройки.

flask.json.dump(obj, fp, app=None, **kwargs)

Сериализует объект в JSON, записывая его в объект файла.

Принимает те же аргументы, что и встроенная функция json.dump(), с некоторыми значениями по умолчанию из конфигурации приложения.

Parameters
  • obj (Any) – Объект для сериализации в JSON.
  • fp (IO[str]) – Объект файла для записи JSON.
  • app (Optional[Flask]) – Используйте конфигурацию этого приложения вместо активного контекста приложения или значений по умолчанию.
  • kwargs (Any) – Дополнительные аргументы, передаваемые json.dump().
Return type

None

Изменено в версии 2.0: Запись в двоичный файл и аргумент encoding устарели и будут удалены в Flask 2.1.

flask.json.loads(s, app=None, **kwargs)

Десериализует объект из строки JSON.

Принимает те же аргументы, что и встроенная функция json.loads(), с некоторыми значениями по умолчанию из конфигурации приложения.

Parameters
  • s (str) – Строка JSON для десериализации.
  • app (Optional[Flask]) – Используйте конфигурацию этого приложения вместо активного контекста приложения или значений по умолчанию.
  • kwargs (Any) – Дополнительные аргументы, передаваемые json.loads().
Return type

Any

Изменено в версии 2.0: encoding устарело и будет удалено в Flask 2.1. Данные должны быть строкой или байтами UTF-8.

Changelog

Изменено в версии 1.0.3: app может быть передан напрямую, а не требует контекста приложения для настройки.

flask.json.load(fp, app=None, **kwargs)

Десериализует объект из JSON, прочитанного из объекта файла.

Принимает те же аргументы, что и встроенная функция json.load(), с некоторыми значениями по умолчанию из конфигурации приложения.

Parameters
  • fp (IO[str]) – Объект файла для чтения JSON.
  • app (Optional[Flask]) – Используйте конфигурацию этого приложения вместо активного контекста приложения или значений по умолчанию.
  • kwargs (Any) – Дополнительные аргументы, передаваемые json.load().
Return type

Any

Изменено в версии 2.0: encoding устарело и будет удалено в Flask 2.1. Файл должен быть в текстовом режиме или в двоичном режиме с байтами UTF-8.

class flask.json.JSONEncoder(*, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, sort_keys=False, indent=None, separators=None, default=None)

По умолчанию используется кодировщик JSON. Обрабатывает дополнительные типы по сравнению со встроенным json.JSONEncoder.

  • datetime.datetime и datetime.date сериализуются в строки формата RFC 822. Это соответствует формату даты HTTP.
  • uuid.UUID сериализуется в строку.
  • dataclasses.dataclass передается в dataclasses.asdict().
  • Markup (или любой объект с методом __html__ ) вызовет метод __html__ для получения строки.

Для переопределения значения по умолчанию назначьте подкласс этого класса в flask.Flask.json_encoder или flask.Blueprint.json_encoder.

default(o)

Преобразует o в сериализуемый в JSON тип. См. json.JSONEncoder.default(). Python не поддерживает переопределение способа сериализации основных типов, таких как str или list, они обрабатываются до вызова этого метода.

Parameters

o (Any) –

Return type

Any

class flask.json.JSONDecoder(*, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, strict=True, object_pairs_hook=None)

По умолчанию используется декодировщик JSON.

Это не изменяет поведение встроенного json.JSONDecoder.

Для переопределения значения по умолчанию назначьте подкласс этого класса в flask.Flask.json_decoder или flask.Blueprint.json_decoder.

Отмеченный JSON

Компактное представление для потери без потери сериализации нестандартных типов JSON. SecureCookieSessionInterface использует это для сериализации данных сеанса, но может быть полезен и в других местах. Его можно расширить для поддержки других типов.

class flask.json.tag.TaggedJSONSerializer

Сериализатор, использующий систему меток для компактного представления объектов, которые не являются типами JSON. Передается как промежуточный сериализатор в itsdangerous.Serializer.

Поддерживаются следующие дополнительные типы:

  • dict
  • tuple
  • bytes
  • Markup
  • UUID
  • datetime
Return type

None

default_tags = [<class 'flask.json.tag.TagDict'>, <class 'flask.json.tag.PassDict'>, <class 'flask.json.tag.TagTuple'>, <class 'flask.json.tag.PassList'>, <class 'flask.json.tag.TagBytes'>, <class 'flask.json.tag.TagMarkup'>, <class 'flask.json.tag.TagUUID'>, <class 'flask.json.tag.TagDateTime'>]

Классы меток для привязки при создании сериализатора. Другие метки можно добавить позже, используя register().

dumps(value)

Пометить значение и сбросить его в компактную строку JSON.

Parameters

value (Any) –

Return type

str

loads(value)

Загрузить данные из строки JSON и десериализовать любые помеченные объекты.

Parameters

value (str) –

Return type

Any

register(tag_class, force=False, index=None)

Зарегистрировать новую метку в этом сериализаторе.

Parameters
  • tag_class (Type[flask.json.tag.JSONTag]) – класс тегов для регистрации. Будет создан с экземпляром этого сериализатора.
  • force (bool) – перезаписать существующую метку. Если false (по умолчанию), возбуждается KeyError.
  • index (Optional[int]) – индекс для вставки новой метки в порядке меток. Полезно, когда новая метка является частным случаем существующей метки. Если None (по умолчанию), метка добавляется в конец порядка.
Raises

KeyError – если ключ метки уже зарегистрирован и force не true.

Return type

None

tag(value)

Преобразовать значение в помеченное представление, если необходимо.

Parameters

value (Any) –

Return type

Dict[str, Any]

untag(value)

Преобразовать помеченное представление обратно в исходный тип.

Parameters

value (Dict[str, Any]) –

Return type

Any

class flask.json.tag.JSONTag(serializer)

Базовый класс для определения тегов типов для TaggedJSONSerializer.

Параметры

serializer (TaggedJSONSerializer) –

Тип возвращаемого значения

None

check(value)

Проверка, нужно ли этому тегу помечать данное значение.

Параметры

value (Any) –

Тип возвращаемого значения

bool

key: Optional[str] = None

Тег для маркировки сериализованного объекта. Если None, этот тег используется только как промежуточный шаг при маркировке.

tag(value)

Преобразование значения в допустимый тип JSON и добавление структуры тега вокруг него.

Параметры

value (Any) –

Тип возвращаемого значения

Any

to_json(value)

Преобразование объекта Python в объект, являющийся допустимым типом JSON. Тег будет добавлен позже.

Параметры

value (Any) –

Тип возвращаемого значения

Any

to_python(value)

Преобразование представления JSON обратно в правильный тип. Тег уже будет удален.

Параметры

value (Any) –

Тип возвращаемого значения

Any

Рассмотрим пример, добавляющий поддержку OrderedDict. Словари в JSON не упорядочены, поэтому для обработки этого мы будем выводить элементы как список пар [key, value]. Подклассируйте JSONTag и присвойте ему новый ключ ' od' для идентификации типа. Сериализатор сессий сначала обрабатывает словари, поэтому вставьте новый тег в начало порядка, так как OrderedDict должен обрабатываться перед dict.

from flask.json.tag import JSONTag

class TagOrderedDict(JSONTag):
    __slots__ = ('serializer',)
    key = ' od'

    def check(self, value):
        return isinstance(value, OrderedDict)

    def to_json(self, value):
        return [[k, self.serializer.tag(v)] for k, v in iteritems(value)]

    def to_python(self, value):
        return OrderedDict(value)

app.session_interface.serializer.register(TagOrderedDict, index=0)

Рендеринг шаблонов

flask.render_template(template_name_or_list, **context)

Рендерит шаблон из папки шаблонов с заданным контекстом.

Параметры
  • template_name_or_list (Union[str, List[str]]) – имя шаблона для рендеринга или итерируемый объект с именами шаблонов, первый существующий будет рендерирован
  • context (Any) – переменные, которые должны быть доступны в контексте шаблона.
Тип возвращаемого значения

str

flask.render_template_string(source, **context)

Рендерит шаблон из заданной строки шаблона с заданным контекстом. Переменные шаблона будут автоматически экранированы.

Параметры
  • source (str) – исходный код шаблона для рендеринга
  • context (Any) – переменные, которые должны быть доступны в контексте шаблона.
Тип возвращаемого значения

str

flask.get_template_attribute(template_name, attribute)

Загружает макрос (или переменную) из экспортируемого шаблона. Это можно использовать для вызова макроса из кода Python. Если у вас, например, есть шаблон с именем _cider.html со следующим содержимым:

{% macro hello(name) %}Hello {{ name }}!{% endmacro %}

Вы можете получить к нему доступ из кода Python так:

hello = get_template_attribute('_cider.html', 'hello')
return hello('World')
Изменения

Введено в версии 0.2.

Параметры
  • template_name (str) – имя шаблона
  • attribute (str) – имя переменной или макроса для доступа
Тип возвращаемого значения

Any

Настройка

class flask.Config(root_path, defaults=None)

Работает точно так же, как словарь, но предоставляет способы заполнения его из файлов или специальных словарей. Существует два распространенных паттерна для заполнения конфигурации.

Вы можете заполнить конфигурацию из файла конфигурации:

app.config.from_pyfile('yourconfig.cfg')

Или же вы можете определить параметры конфигурации в модуле, который вызывает from_object(), или указать путь импорта к модулю, который должен быть загружен. Также можно указать, чтобы использовать тот же модуль и при этом предоставить значения конфигурации непосредственно перед вызовом:

DEBUG = True
SECRET_KEY = 'development key'
app.config.from_object(__name__)

В обоих случаях (загрузка из любого файла Python или из модулей) в конфигурацию добавляются только ключи с заглавными буквами. Это позволяет использовать значения с маленькими буквами в файле конфигурации для временных значений, которые не добавляются в конфигурацию, или определять ключи конфигурации в том же файле, что и реализация приложения.

Возможно, наиболее интересный способ загрузки конфигурации — из переменной среды, указывающей на файл:

app.config.from_envvar('YOURAPPLICATION_SETTINGS')

В этом случае перед запуском приложения необходимо установить эту переменную среды на файл, который вы хотите использовать. В Linux и OS X используйте оператор export:

export YOURAPPLICATION_SETTINGS='/path/to/config/file'

В Windows используйте set вместо этого.

Parameters
  • root_path (str) – путь, относительно которого читаются файлы. Когда объект конфигурации создается приложением, это корневой путь приложения root_path.
  • defaults (Optional[dict]) – необязательный словарь значений по умолчанию
Return type

None

from_envvar(variable_name, silent=False)

Загружает конфигурацию из переменной среды, указывающей на файл конфигурации. Это по сути всего лишь сокращение с более понятными сообщениями об ошибках для этой строки кода:

app.config.from_pyfile(os.environ['YOURAPPLICATION_SETTINGS'])
Parameters
  • variable_name (str) – имя переменной среды
  • silent (bool) – установить в True , если вы хотите, чтобы ошибки при отсутствии файлов игнорировались.
Returns

bool. True если конфигурация загружена успешно, False в противном случае.

Return type

bool

from_file(filename, load, silent=False)

Обновляет значения в конфигурации из файла, загруженного с помощью параметра load. Загруженные данные передаются методу from_mapping().

import toml
app.config.from_file("config.toml", load=toml.load)
Parameters
  • filename (str) – Путь к файлу данных. Это может быть абсолютный путь или путь, относительный к корневому пути конфигурации.
  • load (Callable[[Reader], Mapping] где Reader реализует метод read.) – вызываемый объект, принимающий дескриптор файла и возвращающий отображение загруженных данных из файла.
  • silent (bool) – Игнорировать файл, если он не существует.
Return type

bool

Новое в версии 2.0.

from_mapping(mapping=None, **kwargs)

Обновляет конфигурацию, как update() игнорируя элементы с ключами, не имеющими заглавных букв.

Changelog

Новое в версии 0.11.

Parameters
  • mapping (Optional[Mapping[str, Any]]) –
  • kwargs (Any) –
Return type

bool

from_object(obj)

Обновляет значения из заданного объекта. Объект может быть одного из двух типов:

  • строка: в этом случае будет импортирован объект с этим именем
  • ссылка на фактический объект: используется непосредственно этот объект

Объекты обычно являются модулями или классами. from_object() загружает только атрибуты модуля/класса с заглавными буквами. Объект dict не будет работать с from_object(), потому что ключи dict не являются атрибутами класса dict.

Пример конфигурации на основе модуля:

app.config.from_object('yourapplication.default_config')
from yourapplication import default_config
app.config.from_object(default_config)

Над объектом перед загрузкой ничего не делается. Если объект является классом и имеет @property атрибуты, его необходимо инициализировать перед передачей в этот метод.

Не следует использовать эту функцию для загрузки фактической конфигурации, а скорее конфигурации по умолчанию. Фактическая конфигурация должна загружаться с помощью from_pyfile() и желательно из места, не находящегося в пакете, потому что пакет может быть установлен в системе.

См. Разработка/Производство для примера конфигурации на основе класса с использованием from_object().

Parameters

obj (Union[object, str]) – имя импорта или объект

Return type

None

from_pyfile(filename, silent=False)

Обновляет значения в конфигурации из файла Python. Эта функция ведет себя так, как если бы файл был импортирован как модуль с помощью функции from_object().

Parameters
  • filename (str) – имя файла конфигурации. Это может быть абсолютный путь к файлу или путь, относительный к корневому пути.
  • silent (bool) – установить в True , если вы хотите, чтобы ошибки при отсутствии файлов игнорировались.
Return type

bool

Changelog

Новое в версии 0.7: silent параметр.

get_namespace(namespace, lowercase=True, trim_namespace=True)

Возвращает словарь, содержащий подмножество параметров конфигурации, соответствующих указанному имени пространства имен/префиксу. Пример использования:

app.config['IMAGE_STORE_TYPE'] = 'fs'
app.config['IMAGE_STORE_PATH'] = '/var/app/images'
app.config['IMAGE_STORE_BASE_URL'] = 'http://img.website.com'
image_store_config = app.config.get_namespace('IMAGE_STORE_')

Полученный словарь image_store_config будет выглядеть следующим образом:

{
    'type': 'fs',
    'path': '/var/app/images',
    'base_url': 'http://img.website.com'
}

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

Параметры
  • namespace (str) – имя пространства конфигурации
  • lowercase (bool) – флаг, указывающий, должны ли ключи результирующего словаря быть в нижнем регистре
  • trim_namespace (bool) – флаг, указывающий, должны ли ключи результирующего словаря не включать имя пространства имен
Тип возвращаемого значения

Dict[str, Any]

Изменения

Добавлен в версии 0.11.

Справочные данные по потокам

flask.stream_with_context(generator_or_function)

Контексты запроса исчезают, когда ответ запускается на сервере. Это делается для повышения эффективности и для уменьшения вероятности возникновения утечек памяти при использовании плохо написанных WSGI-мидлваров. Недостатком является то, что если вы используете ответы со струйными данными, генератор больше не может получить доступ к информации, связанной с запросом.

Однако эта функция может помочь сохранить контекст на более длительное время:

from flask import stream_with_context, request, Response

@app.route('/stream')
def streamed_response():
    @stream_with_context
    def generate():
        yield 'Hello '
        yield request.args['name']
        yield '!'
    return Response(generate())

В качестве альтернативы она также может быть использована вокруг определенного генератора:

from flask import stream_with_context, request, Response

@app.route('/stream')
def streamed_response():
    def generate():
        yield 'Hello '
        yield request.args['name']
        yield '!'
    return Response(stream_with_context(generate()))
Изменения

Добавлен в версии 0.9.

Параметры

generator_or_function (Union[Generator, Callable]) –

Тип возвращаемого значения

Генератор

Полезные внутренние элементы

class flask.ctx.RequestContext(app, environ, request=None, session=None)

Контекст запроса содержит всю информацию, относящуюся к запросу. Он создаётся в начале запроса и добавляется в _request_ctx_stack , а удаляется в конце. Он создаст адаптер URL и объект запроса для предоставленной WSGI-среды.

Не пытайтесь использовать этот класс напрямую, вместо этого используйте test_request_context() и request_context() для создания этого объекта.

При извлечении контекста запроса, он будет выполнять все функции, зарегистрированные в приложении для завершения выполнения (teardown_request()).

Контекст запроса автоматически извлекается в конце запроса. В режиме отладки контекст запроса сохраняется, если произойдут исключения, чтобы интерактивные отладчики имели возможность инспектировать данные. С версии 0.4 это также можно принудительно сделать для запросов, которые не завершились ошибкой и вне DEBUG режима. Установив 'flask._preserve_context' в True в WSGI-среде, контекст не будет извлекаться в конце запроса. Это используется клиентом test_client(), например, для реализации отложенной функциональности очистки.

Это может быть полезно для модульных тестов, где вам нужна информация из локального контекста на немного более длительное время. Убедитесь, что в этой ситуации вы правильно pop() стек самостоятельно, иначе ваши модульные тесты будут создавать утечки памяти.

Параметры
  • app (Flask) –
  • environ (dict) –
  • request (Optional[Request]) –
  • session (Optional[SessionMixin]) –
Тип возвращаемого значения

None

copy()

Создаёт копию контекста запроса с тем же объектом запроса. Это можно использовать для перемещения контекста запроса в другой greenlet. Поскольку фактический объект запроса одинаков, это нельзя использовать для перемещения контекста запроса в другую нить, если доступ к объекту запроса не заблокирован.

Изменения

Изменено в версии 1.1: Используется текущий объект сессии вместо перезагрузки исходных данных. Это предотвращает flask.session от указания на устаревший объект.

Добавлен в версии 0.10.

Тип возвращаемого значения

flask.ctx.RequestContext

match_request()

Может быть переопределён подклассом для подключения к сопоставлению запроса.

Тип возвращаемого значения

None

pop(exc=<object object>)

Удаляет контекст запроса и отвязывает его, выполнив это действие. Это также вызовет выполнение функций, зарегистрированных декоратором teardown_request().

Изменения

Изменено в версии 0.9: Добавлен аргумент exc.

Параметры

exc (Optional[BaseException]) –

Тип возвращаемого значения

None

push()

Связывает контекст запроса с текущим контекстом.

Тип возвращаемого значения

None

flask._request_ctx_stack

Внутренний LocalStack, который хранит RequestContext экземпляры. Обычно, вместо стека следует обращаться к прокси request и session. Доступ к стеку может быть полезен в коде расширения.

Следующие атрибуты всегда присутствуют в каждом слое стека:

app

активное приложение Flask.

url_adapter

адаптер URL, который использовался для сопоставления запроса.

request

текущий объект запроса.

session

активный объект сессии.

g

объект со всеми атрибутами объекта flask.g.

flashes

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

Пример использования:

from flask import _request_ctx_stack

def get_session():
    ctx = _request_ctx_stack.top
    if ctx is not None:
        return ctx.session
class flask.ctx.AppContext(app)

Контекст приложения связывает объект приложения неявно с текущей нитью или зелёной нитью, подобно тому, как RequestContext связывает информацию о запросе. Контекст приложения также неявно создаётся, если создан контекст запроса, но приложение не находится вверху отдельного контекста приложения.

Параметры

app (Flask) –

Тип возвращаемого значения

None

pop(exc=<object object>)

Удаляет контекст приложения.

Параметры

exc (Необязательно[BaseException]) –

Тип возвращаемого значения

None

push()

Привязывает контекст приложения к текущему контексту.

Тип возвращаемого значения

None

flask._app_ctx_stack

Внутренний LocalStack, который хранит экземпляры AppContext. Обычно вместо стека следует обращаться к прокси current_app и g. Расширения могут получить доступ к контекстам в стеке как к пространству имён для хранения данных.

Журнал изменений

Новая версия в версии 0.9.

class flask.blueprints.BlueprintSetupState(blueprint, app, options, first_registration)

Временный объект для регистрации модуля Blueprint в приложении. Экземпляр этого класса создаётся методом make_setup_state() и затем передаётся всем функциям обратного вызова регистрации.

Параметры
  • blueprint (Blueprint) –
  • app (Flask) –
  • options (Any) –
  • first_registration (bool) –
Тип возвращаемого значения

None

add_url_rule(rule, endpoint=None, view_func=None, **options)

Вспомогательный метод для регистрации правила (и необязательно функции представления) в приложении. Конечная точка автоматически добавляется с именем модуля Blueprint.

Параметры
  • rule (str) –
  • endpoint (Необязательно[str]) –
  • view_func (Необязательно[Callable]) –
  • options (Any) –
Тип возвращаемого значения

None

app

ссылка на текущее приложение

blueprint

ссылка на модуль Blueprint, создавший этот объект состояния.

first_registration

Поскольку модули Blueprint могут регистрироваться в приложении несколько раз, а не всё нужно регистрировать по несколько раз, этот атрибут можно использовать, чтобы выяснить, был ли модуль Blueprint зарегистрирован ранее.

options

словарь со всеми параметрами, которые были переданы методу register_blueprint().

subdomain

Поддомен, для которого должен быть активен модуль Blueprint, None в противном случае.

url_defaults

Словарь с значениями по умолчанию для URL, которые добавляются ко всем URL, определённым с помощью модуля Blueprint.

url_prefix

Префикс, который должен использоваться для всех URL, определённых в модуле Blueprint.

Сигналы

Журнал изменений

Новая версия в версии 0.6.

signals.signals_available

True если система сигнализации доступна. Это так, когда установлен пакет blinker.

В Flask существуют следующие сигналы:

flask.template_rendered

Этот сигнал отправляется, когда шаблон был успешно обработан. Сигнал вызывается с экземпляром шаблона как template и контекстом как словарь (названный context).

Пример подписчика:

def log_template_renders(sender, template, context, **extra):
    sender.logger.debug('Rendering template "%s" with context %s',
                        template.name or 'string template',
                        context)

from flask import template_rendered
template_rendered.connect(log_template_renders, app)
flask.before_render_template

Этот сигнал отправляется перед обработкой шаблона. Сигнал вызывается с экземпляром шаблона как template и контекстом как словарь (названный context).

Пример подписчика:

def log_template_renders(sender, template, context, **extra):
    sender.logger.debug('Rendering template "%s" with context %s',
                        template.name or 'string template',
                        context)

from flask import before_render_template
before_render_template.connect(log_template_renders, app)
flask.request_started

Этот сигнал отправляется при настройке контекста запроса перед любой обработкой запроса. Поскольку контекст запроса уже связан, подписчик может получить доступ к запросу с помощью стандартных глобальных прокси, таких как request.

Пример подписчика:

def log_request(sender, **extra):
    sender.logger.debug('Request context is set up')

from flask import request_started
request_started.connect(log_request, app)
flask.request_finished

Этот сигнал отправляется непосредственно перед отправкой ответа клиенту. Он передаёт ответ, который нужно отправить, под именем response.

Пример подписчика:

def log_response(sender, response, **extra):
    sender.logger.debug('Request context is about to close down.  '
                        'Response: %s', response)

from flask import request_finished
request_finished.connect(log_response, app)
flask.got_request_exception

Этот сигнал отправляется, когда во время обработки запроса возникает необработанное исключение, включая отладку. Исключение передаётся подписчику как exception.

Этот сигнал не отправляется для HTTPException или других исключений, для которых зарегистрированы обработчики ошибок, если исключение не было поднято из обработчика ошибок.

Этот пример показывает, как выполнить дополнительное ведение журнала, если возникло теоретическое исключение SecurityException:

from flask import got_request_exception

def log_security_exception(sender, exception, **extra):
    if not isinstance(exception, SecurityException):
        return

    security_logger.exception(
        f"SecurityException at {request.url!r}",
        exc_info=exception,
    )

got_request_exception.connect(log_security_exception, app)
flask.request_tearing_down

Этот сигнал отправляется, когда запрос завершается. Он всегда вызывается, даже если возникает исключение. В настоящее время функции, подписывающиеся на этот сигнал, вызываются после стандартных обработчиков завершения работы, но на это нельзя полагаться.

Пример подписчика:

def close_db_connection(sender, **extra):
    session.close()

from flask import request_tearing_down
request_tearing_down.connect(close_db_connection, app)

Начиная с Flask 0.9, в качестве аргумента exc также передаётся ссылка на исключение, которое вызвало завершение работы, если таковое имелось.

flask.appcontext_tearing_down

Этот сигнал отправляется при завершении работы контекста приложения. Он всегда вызывается, даже если возникает исключение. В настоящее время функции, подписывающиеся на этот сигнал, вызываются после стандартных обработчиков завершения работы, но на это нельзя полагаться.

Пример подписчика:

def close_db_connection(sender, **extra):
    session.close()

from flask import appcontext_tearing_down
appcontext_tearing_down.connect(close_db_connection, app)

В качестве аргумента exc также передаётся ссылка на исключение, которое вызвало завершение работы, если таковое имелось.

flask.appcontext_pushed

Это сигнал, отправляемый при вставке контекста приложения. Отправителем является приложение. Это обычно полезно для юнит-тестов, чтобы временно подключить информацию. Например, его можно использовать для ранней установки ресурса в объект g.

Пример использования:

from contextlib import contextmanager
from flask import appcontext_pushed

@contextmanager
def user_set(app, user):
    def handler(sender, **kwargs):
        g.user = user
    with appcontext_pushed.connected_to(handler, app):
        yield

И в коде теста:

def test_user_me(self):
    with user_set(app, 'john'):
        c = app.test_client()
        resp = c.get('/users/me')
        assert resp.data == 'username=john'
Changelog

Добавлено в версии 0.10.

flask.appcontext_popped

Этот сигнал отправляется при извлечении контекста приложения. Отправителем является приложение. Обычно он связан со сигналом appcontext_tearing_down.

Changelog

Добавлено в версии 0.10.

flask.message_flashed

Этот сигнал отправляется, когда приложение отображает сообщение. Сообщение отправляется в качестве message аргумента ключевого слова, а категория — как category.

Пример подписчика:

recorded = []
def record(sender, message, category, **extra):
    recorded.append((message, category))

from flask import message_flashed
message_flashed.connect(record, app)
Changelog

Добавлено в версии 0.10.

class signals.Namespace

Псевдоним для blinker.base.Namespace, если blinker доступен, в противном случае — базовый класс, создающий фиктивные сигналы. Этот класс доступен для расширений Flask, которые хотят предоставить ту же систему обратного вызова, что и Flask.

signal(name, doc=None)

Создает новый сигнал для этого пространства имён, если blinker доступен, в противном случае возвращает фиктивный сигнал, у которого метод send ничего не делает, но при других операциях, включая подключение, выдает исключение RuntimeError.

Представления на основе классов

Changelog

Добавлено в версии 0.7.

class flask.views.View

Альтернативный способ использования функций представлений. Подкласс должен реализовать dispatch_request(), который вызывается с аргументами представления из системы маршрутизации URL. Если methods предоставлен, методы не нужно явно передавать в метод add_url_rule():

class MyView(View):
    methods = ['GET']

    def dispatch_request(self, name):
        return f"Hello {name}!"

app.add_url_rule('/hello/<name>', view_func=MyView.as_view('myview'))

Когда вы хотите декорировать подключаемое представление, вам нужно сделать это либо при создании функции представления (обернув результат as_view()), либо использовать атрибут decorators:

class SecretView(View):
    methods = ['GET']
    decorators = [superuser_required]

    def dispatch_request(self):
        ...

Декораторы, хранящиеся в списке decorators, применяются один за другим при создании функции представления. Обратите внимание, что вы не можете использовать декораторы на основе классов, так как они будут декорировать класс представления, а не сгенерированную функцию представления!

classmethod as_view(name, *class_args, **class_kwargs)

Преобразует класс в фактическую функцию представления, которая может быть использована с системой маршрутизации. Внутренне это генерирует функцию на лету, которая будет инициализировать View при каждом запросе и вызывать метод dispatch_request() на нём.

Аргументы, переданные в as_view(), передаются в конструктор класса.

Parameters
  • name (str) –
  • class_args (Any) –
  • class_kwargs (Any) –
Return type

Callable

decorators: List[Callable] = []

Канонический способ декорирования представлений на основе классов — декорировать результат as_view(). Однако, поскольку это перемещает части логики из объявления класса в место, где он подключён к системе маршрутизации.

Вы можете поместить один или несколько декораторов в этот список, и всякий раз, когда создаётся функция представления, результат автоматически декорируется.

Changelog

Добавлено в версии 0.8.

dispatch_request()

Подклассы должны переопределять этот метод, чтобы реализовать фактический код функции представления. Этот метод вызывается со всеми аргументами из правила URL.

Return type

Union[Response, AnyStr, Dict[str, Any], Generator[AnyStr, None, None], Tuple[Union[Response, AnyStr, Dict[str, Any], Generator[AnyStr, None, None]], Union[Headers, Dict[str, Union[str, List[str], Tuple[str, …]]], List[Tuple[str, Union[str, List[str], Tuple[str, …]]]]]], WSGIApplication]

methods: Optional[List[str]] = None

Список методов, которые может обрабатывать это представление.

provide_automatic_options: Optional[bool] = None

Установка этого параметра отключает или принудительно включает автоматическую обработку OPTIONS.

class flask.views.MethodView

Класс-виджет, который распределяет методы запроса соответствующим методам класса. Например, если вы реализуете метод get, он будет использоваться для обработки запросов GET.

class CounterAPI(MethodView):
    def get(self):
        return session.get('counter', 0)

    def post(self):
        session['counter'] = session.get('counter', 0) + 1
        return 'OK'

app.add_url_rule('/counter', view_func=CounterAPI.as_view('counter'))
dispatch_request(*args, **kwargs)

Подклассы должны переопределять этот метод для реализации фактической функции представления. Этот метод вызывается со всеми аргументами из правила URL.

Параметры
  • args (Any) –
  • kwargs (Any) –
Тип возвращаемого значения

Union[Response, AnyStr, Dict[str, Any], Generator[AnyStr, None, None], Tuple[Union[Response, AnyStr, Dict[str, Any], Generator[AnyStr, None, None]], Union[Headers, Dict[str, Union[str, List[str], Tuple[str, …]]], List[Tuple[str, Union[str, List[str], Tuple[str, …]]]]]], Tuple[Union[Response, AnyStr, Dict[str, Any], Generator[AnyStr, None, None]], int], Tuple[Union[Response, AnyStr, Dict[str, Any], Generator[AnyStr, None, None]], int, Union[Headers, Dict[str, Union[str, List[str], Tuple[str, …]]], List[Tuple[str, Union[str, List[str], Tuple[str, …]]]]]], WSGIApplication]

Регистрация правил маршрутов URL

В целом, есть три способа определить правила для системы маршрутизации:

  1. Вы можете использовать декоратор flask.Flask.route().
  2. Вы можете использовать функцию flask.Flask.add_url_rule().
  3. Вы можете напрямую получить доступ к внутренней системе маршрутизации Werkzeug, которая представлена как flask.Flask.url_map.

Переменные части в маршруте могут быть указаны в угловых скобках (/user/<username>). По умолчанию переменная часть в URL принимает любую строку без косой черты, однако можно также указать другой преобразователь, используя <converter:name>.

Переменные части передаются функции представления в качестве именованных аргументов.

Доступны следующие преобразователи:

string

принимает любой текст без косой черты (по умолчанию)

int

принимает целые числа

float

похоже на int, но для чисел с плавающей точкой

path

подобно умолчанию, но также принимает косые черты

any

сопоставляет один из предоставленных элементов

uuid

принимает строки UUID

Пользовательские преобразователи можно определить с помощью flask.Flask.url_map.

Вот несколько примеров:

@app.route('/')
def index():
    pass

@app.route('/<username>')
def show_user(username):
    pass

@app.route('/post/<int:post_id>')
def show_post(post_id):
    pass

Важно помнить, как Flask обрабатывает хвостовые косые черты. Идея состоит в том, чтобы сохранить уникальность каждого URL, поэтому применяются следующие правила:

  1. Если правило заканчивается косой чертой, а пользователь запрашивает его без косой черты, пользователь автоматически перенаправляется на ту же страницу с присоединенной хвостовой косой чертой.
  2. Если правило не заканчивается косой чертой, а пользователь запрашивает страницу с косой чертой, возникает ошибка 404 (не найдено).

Это соответствует тому, как веб-серверы обрабатывают статические файлы. Это также позволяет безопасно использовать относительные целевые ссылки.

Вы также можете определить несколько правил для одной и той же функции. Однако они должны быть уникальными. Также можно указать значения по умолчанию. Например, вот определение URL, который принимает необязательную страницу:

@app.route('/users/', defaults={'page': 1})
@app.route('/users/page/<int:page>')
def show_users(page):
    pass

Это указывает, что /users/ будет URL для первой страницы, а /users/page/N будет URL для страницы N.

Если URL содержит значение по умолчанию, оно будет перенаправлено в более простой вид с перенаправлением 301. В приведенном выше примере /users/page/1 будет перенаправлено на /users/. Если ваш маршрут обрабатывает запросы GET и POST, убедитесь, что маршрут по умолчанию обрабатывает только GET, так как перенаправления не могут сохранить данные формы.

@app.route('/region/', defaults={'id': 1})
@app.route('/region/<int:id>', methods=['GET', 'POST'])
def region(id):
   pass

Вот параметры, которые принимает route() и add_url_rule(). Единственное различие заключается в том, что с параметром route функция представления определяется с помощью декоратора, а не параметра view_func.

rule

правило URL в виде строки

endpoint

имя конечной точки зарегистрированного правила URL. Flask предполагает, что имя функции представления — это имя конечной точки, если не указано явно.

view_func

функция, которая вызывается при обработке запроса на указанную конечную точку. Если это не указано, можно указать функцию позже, сохранив ее в словаре view_functions с конечной точкой в качестве ключа.

defaults

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

subdomain

устанавливает правило для поддомена в случае использования сопоставления по поддомену. Если не указано, используется подразумеваемый поддомен.

**options

опции для передачи объекту Rule ниже. Изменение в Werkzeug — это обработка параметров метода. methods — это список методов, к которым должно быть ограничено это правило (GET, POST и т. д.). По умолчанию правило просто прослушивает GET (и неявно HEAD). Начиная с Flask 0.6, OPTIONS неявно добавляется и обрабатывается стандартной обработкой запросов. Их нужно указывать в виде именованных аргументов.

Параметры функции представления

Для внутреннего использования функции представления могут иметь некоторые атрибуты, позволяющие настроить поведение, над которым сама функция обычно не имеет контроля. Следующие атрибуты можно указать необязательно, чтобы либо переопределить некоторые значения по умолчанию для add_url_rule(), либо изменить общее поведение:

  • __name__: Имя функции по умолчанию используется в качестве конечной точки. Если конечная точка задана явно, используется это значение. Кроме того, по умолчанию к этому значению будет добавлен префикс с именем синего плана, который не может быть настроен из самой функции.
  • methods: Если методы не указаны при добавлении правила URL, Flask будет искать их в самом объекте функции представления, если существует атрибут methods. Если он существует, он будет извлекать информацию о методах оттуда.
  • provide_automatic_options: Если этот атрибут установлен, Flask будет либо принудительно включать, либо отключать автоматическую реализацию HTTP-ответа OPTIONS. Это может быть полезно при работе с декораторами, которые хотят настроить ответ OPTIONS на уровне каждого представления.
  • required_methods: Если этот атрибут установлен, Flask всегда будет добавлять эти методы при регистрации правила URL, даже если методы были явно переопределены в вызове route().

Полный пример:

def index():
    if request.method == 'OPTIONS':
        # custom options handling here
        ...
    return 'Hello World!'
index.provide_automatic_options = False
index.methods = ['GET', 'OPTIONS']

app.add_url_rule('/', index)
Журнал изменений

В версии 0.8: Добавлена функциональность provide_automatic_options.

Интерфейс командной строки

class flask.cli.FlaskGroup(add_default_commands=True, create_app=None, add_version_option=True, load_dotenv=True, set_debug_flag=True, **extra)

Специальный подкласс группы AppGroup, поддерживающий загрузку дополнительных команд из настроенного приложения Flask. Обычно разработчику не нужно взаимодействовать с этим классом, но есть некоторые очень продвинутые случаи использования, для которых имеет смысл создать экземпляр этого класса. См. Пользовательские скрипты.

Параметры
  • add_default_commands – если True, то будут добавлены команды run и shell по умолчанию.
  • add_version_option – добавляет опцию --version.
  • create_app – необязательный обратный вызов, которому передается информация о скрипте, и который возвращает загруженное приложение.
  • load_dotenv – Загрузить ближайшие файлы .env и .flaskenv для установки переменных среды. Также изменит рабочую директорию на директорию, содержащую первый найденный файл.
  • set_debug_flag – Установить флаг отладки приложения на основе активной среды
Журнал изменений

Изменено в версии 1.0: Если установлено, будет использоваться python-dotenv для загрузки переменных среды из файлов .env и .flaskenv.

get_command(ctx, name)

На основе контекста и имени команды возвращает объект Command, если он существует, или возвращает None.

list_commands(ctx)

Возвращает список имён подкоманд в порядке их появления.

main(*args, **kwargs)

Это способ вызова скрипта со всеми функциями как командной строки. Это всегда завершает приложение после вызова. Если этого не нужно, нужно перехватить SystemExit.

Этот метод также доступен путем прямого вызова экземпляра Command.

Параметры
  • args – аргументы, которые должны использоваться для парсинга. Если не указаны, используется sys.argv[1:].
  • prog_name – имя программы, которое должно использоваться. По умолчанию имя программы создается путем взятия имени файла из sys.argv[0].
  • complete_var – переменная среды, которая управляет поддержкой завершения ввода bash. По умолчанию "_<prog_name>_COMPLETE" с prog_name в верхнем регистре.
  • standalone_mode – поведение по умолчанию — вызывать скрипт в автономном режиме. Click затем будет обрабатывать исключения и преобразовывать их в сообщения об ошибках, и функция никогда не вернётся, но завершит интерпретатор. Если это установлено в False, они будут переданы вызывающей стороне, а возвращаемое значение этой функции будет возвращаемым значением invoke().
  • extra – дополнительные ключевые аргументы передаются в конструктор контекста. Подробнее см. Context.

Изменено в версии 8.0: При взятии аргументов из sys.argv в Windows расширяются шаблоны glob, пользовательский каталог и переменные среды.

Изменено в версии 3.0: Добавлен параметр standalone_mode.

class flask.cli.AppGroup(name=None, commands=None, **attrs)

Работает аналогично обычной группе click Group, но изменяет поведение декоратора command() таким образом, что он автоматически оборачивает функции в with_appcontext().

Не путать с FlaskGroup.

Параметры
  • name (Optional[str]) –
  • commands (Optional[Union[Dict[str, click.core.Command], Sequence[click.core.Command]]]) –
  • attrs (Any) –
Возвращаемый тип

None

command(*args, **kwargs)

Работает точно так же, как одноимённый метод обычной группы click.Group, но оборачивает обратные вызовы в with_appcontext(), если это не отключено путём передачи with_appcontext=False.

group(*args, **kwargs)

Работает точно так же, как одноимённый метод обычной группы click.Group, но по умолчанию устанавливает класс группы в AppGroup.

class flask.cli.ScriptInfo(app_import_path=None, create_app=None, set_debug_flag=True)

Вспомогательный объект для работы с приложениями Flask. Обычно взаимодействовать с ним не нужно, так как он используется внутри click для диспетчеризации. В будущих версиях Flask этот объект, скорее всего, будет играть большую роль. Обычно он создаётся автоматически с помощью FlaskGroup, но вы также можете вручную его создать и передать как объект click.

app_import_path

Необязательно путь импорта для приложения Flask.

create_app

Необязательная функция, которой передаётся информация о скрипте для создания экземпляра приложения.

data

Словарь с произвольной информацией, которую можно связать с этой информацией о скрипте.

load_app()

Загружает приложение Flask (если оно ещё не загружено) и возвращает его. Вызов этого метода несколько раз приведет только к возврату уже загруженного приложения.

flask.cli.load_dotenv(path=None)

Загрузить файлы «dotenv» в порядке приоритета, чтобы установить переменные среды.

Если переменная среды уже установлена, она не перезаписывается, поэтому более ранние файлы в списке имеют приоритет над последующими.

Это пустая операция, если python-dotenv не установлен.

Параметры

path – Загрузить файл по этому расположению вместо поиска.

Возвращает

True если файл был загружен.

Изменено в версии 2.0: При загрузке файлов env установлено кодирование по умолчанию UTF-8.

Журнал изменений

Изменено в версии 1.1.0: Возвращает False если python-dotenv не установлен или указанный путь не является файлом.

Новое в версии 1.0.

flask.cli.with_appcontext(f)

Оборачивает обратный вызов, чтобы гарантировать, что он будет выполнен с контекстом приложения скрипта. Если обратные вызовы зарегистрированы напрямую в объекте app.cli , они по умолчанию оборачиваются этой функцией, если это не отключено.

flask.cli.pass_script_info(f)

Помечает функцию так, чтобы экземпляр ScriptInfo передавался в качестве первого аргумента в обратный вызов click.

Параметры

f (click.decorators.F) –

Тип возвращаемого значения

click.decorators.F

flask.cli.run_command = <Command run>

Запуск локального сервера разработки.

Этот сервер предназначен только для целей разработки. Он не обеспечивает стабильность, безопасность или производительность серверов WSGI для производства.

Релоадер и отладчик включены по умолчанию, если FLASK_ENV=development или FLASK_DEBUG=1.

Параметры
  • args (Any) –
  • kwargs (Any) –
Тип возвращаемого значения

Any

flask.cli.shell_command = <Command shell>

Запуск интерактивной оболочки Python в контексте данного приложения Flask. Приложение заполнит пространство имён по умолчанию этой оболочки в соответствии с её конфигурацией.

Это полезно для выполнения небольших фрагментов управляющего кода без необходимости ручной настройки приложения.

Параметры
  • args (Any) –
  • kwargs (Any) –
Тип возвращаемого значения

Any

© 2007–2021 Pallets
Licensed under the BSD 3-clause License.
https://flask.palletsprojects.com/en/2.0.x/api/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API