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, конфигурации шаблонов и многого другого.
Имя пакета используется для поиска ресурсов внутри пакета или папки, содержащей модуль, в зависимости от того, разрешается ли параметр package в фактический пакет 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[Union[str, os.PathLike]]) – папка со статическими файлами, которая обслуживается по адресу
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]) – путь к корню файлов приложения. Это следует устанавливать вручную только в тех случаях, когда его нельзя определить автоматически, например, для пакетов с именованными пространствами имён.
-
aborter -
Экземпляр
aborter_class, созданный методомmake_aborter(). Вызывается методомflask.abort()для повышения ошибок HTTP, а также может вызываться напрямую.В версии 2.2: Перемещено из
flask.abort, который вызывает этот объект.
-
aborter_class -
псевдоним
werkzeug.exceptions.Aborter
-
add_template_filter(f, name=None) -
Регистрирует пользовательский фильтр шаблонов. Работает точно так же, как декоратор
template_filter().
-
add_template_global(f, name=None) -
Регистрация пользовательской глобальной функции шаблона. Работает точно так же, как декоратор
template_global().Изменения
Введено в версии 0.10.
-
add_template_test(f, name=None) -
Регистрация пользовательского теста шаблона. Работает точно так же, как декоратор
template_test().Изменения
Введено в версии 0.10.
-
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"].OPTIONSдобавляется автоматически по умолчанию.Параметр
view_funcнеобязателен, но если правило должно участвовать в маршрутизации, необходимо ассоциировать имя конечной точки с функцией представления в какой-то момент с помощью декоратораendpoint().app.add_url_rule("/", endpoint="index") @app.endpoint("index") def index(): ...Если у
view_funcесть атрибутrequired_methods, эти методы добавляются к переданным и автоматическим методам. Если у него есть атрибутprovide_automatic_methods, он используется в качестве значения по умолчанию, если параметр не передан.
-
- view_func (Optional[Union[Callable[[...], Union[Response, str, bytes, List[Any], Mapping[str, Any], Iterator[str], Iterator[bytes], Tuple[Union[Response, str, bytes, List[Any], Mapping[str, Any], Iterator[str], Iterator[bytes]], Union[Headers, Mapping[str, Union[str, List[str], Tuple[str, ...]]]], Sequence[Tuple[str, Union[str, List[str], Tuple[str, ...]]]]]], Tuple[Union[Response, str, bytes, List[Any], Mapping[str, Any], Iterator[str], Iterator[bytes]], int], Tuple[Union[Response, str, bytes, List[Any], Mapping[str, Any], Iterator[str], Iterator[bytes]], int, Union[Headers, Mapping[str, Union[
- str, List[str], Tuple[str, ...]]], Sequence[Tuple[str, Union[str, List[str], Tuple[str, ...]]]]]], WSGIApplication]], Callable[[...], Awaitable[Union[Response, str, bytes, List[Any], Mapping[str, Any], Iterator[str], Iterator[bytes], Tuple[Union[Response, str, bytes, List[Any], Mapping[str, Any], Iterator[str], Iterator[bytes]], Union[Headers, Mapping[str, Union[str, List[str], Tuple[str, ...]]], Sequence[Tuple[str, Union[str, List[str], Tuple[str, ...]]]]]], Tuple[Union[Response, str, bytes, List[Any], Mapping[str, Any], Iterator[str], Iterator[bytes]], int], Tuple[Union[Response, str, bytes,
- List[Любой], Отображение[строка, Любой], Итератор[строка], Итератор[байты]], целое число, Объединение[Headers, Отображение[строка, Объединение[строка, Список[строка], Кортеж[строка, ...]]], Последовательность[Кортеж[строка, Объединение[строка, Список[строка], Кортеж[строка, ...]]]]]], WSGIApplication]]]]]) – Функция представления для сопоставления с именем конечной точки.
-
provide_automatic_options (Необязательно[логическое значение]) – Добавить метод
OPTIONSи автоматически отвечать на запросыOPTIONS. -
options (Любой) – Дополнительные параметры, передаваемые объекту
Rule.
- Тип возвращаемого значения
-
None
-
after_request(f) -
Зарегистрировать функцию для выполнения после каждого запроса к этому объекту.
Функция вызывается с объектом ответа и должна возвращать объект ответа. Это позволяет функциям изменять или заменять ответ перед его отправкой.
Если функция вызывает исключение, любые оставшиеся функции
after_requestне будут вызваны. Поэтому это не следует использовать для действий, которые должны быть выполнены, таких как закрытие ресурсов. Используйтеteardown_request()для этого.- Параметры
-
f (flask.scaffold.T_after_request) –
- Тип возвращаемого значения
-
flask.scaffold.T_after_request
-
after_request_funcs: t.Dict[ft.AppOrBlueprintKey, t.List[ft.AfterRequestCallable]] -
Структура данных функций для вызова в конце каждого запроса в формате
{scope: [functions]}. Ключscope— имя схемы, для которой функции активны, илиNoneдля всех запросов.Для регистрации функции используйте декоратор
after_request().Эта структура данных внутренняя. К ней не следует обращаться напрямую, и ее формат может измениться в любое время.
-
app_context() -
Создать
AppContext. Используйте какwithблок, чтобы добавить контекст, что приведет к тому, чтоcurrent_appукажет на это приложение.Контекст приложения автоматически добавляется
RequestContext.push()при обработке запроса и при запуске команды CLI. Используйте его для ручного создания контекста вне этих ситуаций.with app.app_context(): init_db()См. Контекст приложения.
Изменения
Введено в версии 0.9.
- Тип возвращаемого значения
-
app_ctx_globals_class -
Псевдоним
flask.ctx._AppCtxGlobals
-
async_to_sync(func) -
Возвращает синхронную функцию, которая выполнит функцию корутины.
result = app.async_to_sync(func)(*args, **kwargs)
Переопределите этот метод, чтобы изменить способ преобразования асинхронного кода в синхронно вызываемый код приложением.
Изменения
Введено в версии 2.0.
- Параметры
-
func (Вызываемая функция[[...], Корутина]) –
- Тип возвращаемого значения
-
Вызываемая функция[[…], Любой]
-
auto_find_instance_path() -
Пытается найти путь к экземпляру, если он не был передан в конструктор класса приложения. В основном он рассчитает путь к папке с именем
instanceрядом с вашим основным файлом или пакетом.Изменения
Введено в версии 0.8.
- Тип возвращаемого значения
-
before_first_request(f) -
Зарегистрирует функцию, которая будет выполнена перед первым запросом к этому экземпляру приложения.
Функция будет вызвана без аргументов, и ее возвращаемое значение игнорируется.
Устарело начиная с версии 2.2: Будет удалено в Flask 2.3. Запустите код настройки при создании приложения вместо этого.
Изменения
Введено в версии 0.8.
- Параметры
-
f (flask.app.T_before_first_request) –
- Тип возвращаемого значения
-
flask.app.T_before_first_request
-
before_first_request_funcs: t.List[ft.BeforeFirstRequestCallable] -
Список функций, которые будут вызваны в начале первого запроса к этому экземпляру. Для регистрации функции используйте декоратор
before_first_request().Устарело начиная с версии 2.2: Будет удалено в Flask 2.3. Вместо этого выполняйте код настройки при создании приложения.
Журнал изменений
Введено в версии 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 (flask.scaffold.T_before_request) –
- Тип возвращаемого значения
-
flask.scaffold.T_before_request
-
before_request_funcs: t.Dict[ft.AppOrBlueprintKey, t.List[ft.BeforeRequestCallable]] -
Структура данных функций, которые нужно вызвать в начале каждого запроса, в формате
{scope: [functions]}. Ключscope— имя используемого бланкета, илиNoneдля всех запросов.Для регистрации функции используйте декоратор
before_request().Эта структура данных внутренняя. Ее не следует изменять напрямую, и ее формат может измениться в любое время.
-
blueprints: t.Dict[str, 'Blueprint'] -
Сопоставляет зарегистрированные имена бланкетов с объектами бланкетов. Словарь сохраняет порядок регистрации бланкетов. Бланкеты могут быть зарегистрированы несколько раз, этот словарь не отслеживает частоту их добавления.
Журнал изменений
Введено в версии 0.7.
-
cli -
Группа команд Click для регистрации команд CLI для этого объекта. Команды доступны из команды
flaskпосле обнаружения приложения и регистрации бланкетов.
-
config -
Словарь конфигурации в виде
Config. Ведёт себя точно как обычный словарь, но поддерживает дополнительные методы для загрузки конфигурации из файлов.
-
config_class -
Псевдоним
flask.config.Config
-
context_processor(f) -
Регистрирует функцию процессора контекста шаблона.
- Параметры
-
f (flask.scaffold.T_template_context_processor) –
- Тип возвращаемого значения
-
flask.scaffold.T_template_context_processor
-
create_global_jinja_loader() -
Создает загрузчик для среды Jinja2. Может использоваться для переопределения только загрузчика, сохраняя остальные части неизменными. Не рекомендуется переопределять эту функцию. Вместо этого следует переопределить функцию
jinja_loader().Глобальный загрузчик переключается между загрузчиками приложения и отдельных бланкетов.
Журнал изменений
Введено в версии 0.7.
- Тип возвращаемого значения
-
flask.templating.DispatchingJinjaLoader
-
create_jinja_environment() -
Создает среду Jinja на основе
jinja_optionsи различных методов Jinja-связанных методов приложения. Изменениеjinja_optionsпосле этого не повлияет. Также добавляет глобальные переменные и фильтры Flask в среду.Журнал изменений
Изменено в версии 0.11:
Environment.auto_reloadустанавливается в соответствии с параметром конфигурацииTEMPLATES_AUTO_RELOAD.Введено в версии 0.5.
- Тип возвращаемого значения
-
flask.templating.Environment
-
create_url_adapter(request) -
Создает адаптер URL для данного запроса. Адаптер URL создаётся в момент, когда контекст запроса ещё не настроен, поэтому запрос передаётся явно.
Журнал изменений
Изменено в версии 1.0:
SERVER_NAMEбольше не неявно включает соответствие по поддоменам. Используйтеsubdomain_matching.Изменено в версии 0.9: Теперь его также можно вызвать без объекта запроса, когда адаптер URL создаётся для контекста приложения.
Введено в версии 0.6.
- Параметры
-
request (Optional[flask.wrappers.Request]) –
- Тип возвращаемого значения
-
property debug: bool -
Включен ли режим отладки. При использовании
flask runдля запуска сервера разработки, для необработанных исключений будет показан интерактивный отладчик, а сервер будет перезагружаться при изменении кода. Соответствует параметру конфигурацииDEBUG. Может работать некорректно, если задан позднее.Не включайте режим отладки при развертывании в рабочей среде.
Значение по умолчанию:
False
-
default_config = {'APPLICATION_ROOT': '/', 'DEBUG': None, 'ENV': None, 'EXPLAIN_TEMPLATE_LOADING': False, 'JSONIFY_MIMETYPE': None, 'JSONIFY_PRETTYPRINT_REGULAR': None, 'JSON_AS_ASCII': None, 'JSON_SORT_KEYS': None, 'MAX_CONTENT_LENGTH': None, 'MAX_COOKIE_SIZE': 4093, 'PERMANENT_SESSION_LIFETIME': datetime.timedelta(days=31), 'PREFERRED_URL_SCHEME': 'http', '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.
-
dispatch_request() -
Выполняет распределение запросов. Сопоставляет URL и возвращает возвращаемое значение представления или обработчика ошибок. Это не обязательно должен быть объект ответа. Для преобразования возвращаемого значения в правильный объект ответа вызовите
make_response().Журнал изменений
Изменено в версии 0.7: Это больше не обрабатывает исключения, этот код был перемещен в новый
full_dispatch_request().
-
- Тип возвращаемого значения
-
Union[Response, str, bytes, Список[Любой], Словарь[str, Любой], Итератор[str], Итератор[bytes], Кортеж[Объединение[Response, str, bytes, Список[Любой], Словарь[str, Любой], Итератор[str], Итератор[bytes]], Объединение[Headers, Словарь[str, Объединение[str, Список[str], Кортеж[str, …]]], Последовательность[Кортеж[str, Объединение[str, Список[str], Кортеж[str, …]]]]]], Кортеж[Объединение[Response, str, bytes, Список[Любой], Словарь[str, Любой], Итератор[str], Итератор[bytes]], int], Кортеж[Объединение[Response, str, bytes, Список[Любой], Словарь[str, Любой], Итератор[str], Итератор[bytes]], int, Объединение[Headers, Словарь[str, Объединение[str, Список[str], Кортеж[str, …]]], Последовательность[Кортеж[str, Объединение[str, Список[str],
-
do_teardown_appcontext(exc=<object object>) -
Вызывается непосредственно перед тем, как контекст приложения будет удален.
При обработке запроса контекст приложения удаляется после контекста запроса. См.
do_teardown_request().Вызываются все функции, помеченные декоратором
teardown_appcontext(). Затем отправляется сигналappcontext_tearing_down.Вызывается методом
AppContext.pop().Изменения
Введено в версии 0.9.
- Параметры
-
exc (Необязательно[BaseException]) –
- Тип возвращаемого значения
-
None
-
do_teardown_request(exc=<object object>) -
Вызывается после обработки запроса и возврата ответа, непосредственно перед удалением контекста запроса.
Вызываются все функции, помеченные декораторами
teardown_request()иBlueprint.teardown_request(), если запрос обрабатывался голубым принтом. Наконец, отправляется сигналrequest_tearing_down.Вызывается методом
RequestContext.pop(), который может быть отложен во время тестирования для сохранения доступа к ресурсам.- Параметры
-
exc (Необязательно[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 (строка) – Имя конечной точки для сопоставления с функцией представления.
- Тип возвращаемого значения
-
Вызываемый объект[[flask.scaffold.F], flask.scaffold.F]
-
ensure_sync(func) -
Обеспечение синхронной работы функции для WSGI-работников. Обычные
defфункции возвращаются как есть.async defфункции оборачиваются для запуска и ожидания ответа.Переопределите этот метод, чтобы изменить способ выполнения асинхронных представлений приложения.
Изменения
Введено в версии 2.0.
- Параметры
-
func (Вызываемый объект) –
- Тип возвращаемого значения
-
property env: str -
В какой среде работает приложение. Это сопоставляется с ключом конфигурации
ENV.Не включайте режим разработки при развертывании в производстве.
Значение по умолчанию:
'production'Устарело начиная с версии 2.2: Будет удалено в Flask 2.3.
-
error_handler_spec: t.Dict[ft.AppOrBlueprintKey, t.Dict[t.Optional[int], t.Dict[t.Type[Exception], ft.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 (Объединение[Тип[Исключение], целое число]) – код в виде целого числа для обработчика или произвольное исключение
- Тип возвращаемого значения
-
Вызываемый объект[[flask.scaffold.T_error_handler], flask.scaffold.T_error_handler]
-
extensions: dict -
место, где расширения могут хранить состояние, специфичное для приложения. Например, здесь расширение может хранить движки баз данных и аналогичные вещи.
Ключ должен соответствовать имени модуля расширения. Например, в случае расширения «Flask-Foo» в
flask_foo, ключом будет'foo'.Изменения
Введено в версии 0.7.
-
full_dispatch_request() -
Обрабатывает запрос и, помимо этого, выполняет предобработку и послеобработку запроса, а также перехват исключений HTTP и обработку ошибок.
Изменения
Введено в версии 0.7.
- Тип возвращаемого значения
-
-
get(rule, **options) -
Сокращение для
route()сmethods=["GET"].Журнал изменений
Добавлена в версии 2.0.
-
get_send_file_max_age(filename) -
Используется
send_file()для определения значения кэшаmax_ageдля заданного пути к файлу, если оно не было передано.По умолчанию возвращает
SEND_FILE_MAX_AGE_DEFAULTиз конфигурацииcurrent_app. По умолчанию этоNone, что сообщает браузеру использовать условные запросы вместо кэша с таймером, что обычно предпочтительнее.Журнал изменений
Изменено в версии 2.0: Значение по умолчанию конфигурации равно
Noneвместо 12 часов.Добавлена в версии 0.9.
-
property got_first_request: bool -
Этот атрибут устанавливается в
True, если приложение начало обработку первого запроса.Журнал изменений
Добавлена в версии 0.8.
-
handle_exception(e) -
Обрабатывает исключение, для которого не было зарегистрированного обработчика ошибок или которое было поднято из обработчика ошибок. Это всегда приводит к ошибке 500
InternalServerError.Всегда отправляет сигнал
got_request_exception.Если
propagate_exceptionsравноTrue, например, в режиме отладки, ошибка будет повторно поднята, чтобы отладчик мог её отобразить. В противном случае исходное исключение будет записано в журнал, и будет возвращён объектInternalServerError.Если зарегистрирован обработчик ошибок для
InternalServerErrorили500, он будет использован. Для согласованности обработчик всегда получитInternalServerError. Исходное необработанное исключение доступно какe.original_exception.Журнал изменений
Изменено в версии 1.1.0: Обработчик всегда получает экземпляр
InternalServerError, устанавливаяoriginal_exceptionв необработанную ошибку.Изменено в версии 1.1.0:
after_requestфункции и другие операции завершения выполняются даже для стандартного ответа 500, если нет обработчика.Добавлена в версии 0.3.
- Параметры
-
e (Exception) –
- Тип возвращаемого значения
-
handle_http_exception(e) -
Обрабатывает HTTP-исключение. По умолчанию это вызовет зарегистрированные обработчики ошибок и вернёт исключение в качестве ответа.
Журнал изменений
Изменено в версии 1.0.3:
RoutingException, используемый во внутренней работе для действий, таких как перенаправление на слеш во время маршрутизации, не передаётся обработчикам ошибок.Изменено в версии 1.0: Исключения ищутся по коду и по MRO, так что исключения-подклассы
HTTPExceptionмогут обрабатываться универсальным обработчиком для базового исключенияHTTPException.Добавлена в версии 0.3.
- Параметры
- Тип возвращаемого значения
-
-
Union[werkzeug.exceptions.HTTPException, Response, str, bytes, List[Any], Mapping[str, Any], Iterator[str], Iterator[bytes], Tuple[Union[Response, str, bytes, List[Any], Mapping[str, Any], Iterator[str], Iterator[bytes]], Union[Headers, Mapping[str, Union[str, List[str], Tuple[str, …]]], Sequence[Tuple[str, Union[str, List[str], Tuple[str, …]]]]]], Tuple[Union[Response, str, bytes, List[Any], Mapping[str, Any], Iterator[str], Iterator[bytes]], int], Tuple[Union[Response, str, bytes, List[Any], Mapping[str, Any], Iterator[str], Iterator[bytes]], int, Union[Headers, Mapping[str, Union[str, List[str], Tuple[str, …]]], Sequence[Tuple[str, Union[str, List[
-
-
-
handle_url_build_error(error, endpoint, values) -
Вызывается методом
url_for(), если была поднята ошибкаBuildError. Если этот метод возвращает значение, оно будет возвращено методомurl_for, в противном случае ошибка будет повторно поднята.Каждый метод в
url_build_error_handlersвызывается сerror,endpointиvalues. Если метод возвращаетNoneили поднимаетBuildError, он пропускается. В противном случае, его возвращаемое значение возвращается методомurl_for.
-
handle_user_exception(e) -
Этот метод вызывается всякий раз, когда возникает исключение, которое должно быть обработано. Специальным случаем является
HTTPException, который передаётся методуhandle_http_exception(). Этот метод либо возвращает значение ответа, либо повторно поднимает исключение с той же трассировкой.Журнал изменений
Изменено в версии 1.0: Ошибки ключей, поднятые из данных запроса, такие как
form, отображают неверный ключ в режиме отладки, а не общее сообщение об ошибке в запросе.Добавлена в версии 0.7.
- Параметры
-
e (Exception) –
- Тип возвращаемого значения
-
-
Union[werkzeug.exceptions.HTTPException, Response, str, bytes, List[Any], Mapping[str, Any], Iterator[str], Iterator[bytes], Tuple[Union[Response, str, bytes, List[Any], Mapping[str, Any], Iterator[str], Iterator[bytes]], Union[Headers, Mapping[str, Union[str, List[str], Tuple[str, …]]], Sequence[Tuple[str, Union[str, List[str], Tuple[str, …]]]]]], Tuple[Union[Response, str, bytes, List[Any], Mapping[str, Any], Iterator[str], Iterator[bytes]], int], Tuple[Union[Response, str, bytes, List[Any], Mapping[str, Any], Iterator[str], Iterator[bytes]], int, Union[Headers, Mapping[str, Union[str, List[str], Tuple[str, …]]], Sequence[Tuple[str, Union[str, List[
-
-
property has_static_folder: bool -
Trueеслиstatic_folderустановлено.Журнал изменений
Введено в версии 0.5.
-
import_name -
Имя пакета или модуля, к которому принадлежит этот объект. Не изменяйте его после установки конструктором.
-
inject_url_defaults(endpoint, values) -
Вставляет значения по умолчанию для заданного конечной точки непосредственно в словарь значений, переданный. Это используется внутри и автоматически вызывается при построении URL.
Журнал изменений
Введено в версии 0.7.
-
instance_path -
Содержит путь к папке экземпляра.
Журнал изменений
Введено в версии 0.8.
-
iter_blueprints() -
Итерируется по всем Blueprint'ам в порядке их регистрации.
Журнал изменений
Введено в версии 0.11.
- Тип возвращаемого значения
-
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, если он задан.Журнал изменений
Введено в версии 0.5.
-
jinja_options: dict = {} -
Параметры, передаваемые среде Jinja в
create_jinja_environment(). Изменение этих параметров после создания среды (обращение кjinja_env) не повлияет на неё.Журнал изменений
Изменено в версии 1.1.0: Это
dictвместоImmutableDict, чтобы упростить настройку.
-
json: JSONProvider -
Предоставляет доступ к методам JSON. Функции в
flask.jsonвызывают методы этого провайдера, когда активен контекст приложения. Используется для обработки запросов и ответов JSON.Экземпляр
json_provider_class. Может быть настроен путём изменения этого атрибута в подклассе или путём присваивания после этого.По умолчанию,
DefaultJSONProvider, использует встроенную библиотеку Pythonjson. Другой провайдер может использовать другую библиотеку JSON.Введено в версии 2.2.
-
property json_decoder: Type[json.decoder.JSONDecoder] -
Класс декодера JSON для использования. По умолчанию
JSONDecoder.Устаревшее с версии 2.2: Будет удалено в Flask 2.3. Настройте
json_provider_classвместо этого.Журнал изменений
Введено в версии 0.10.
-
property json_encoder: Type[json.encoder.JSONEncoder] -
Класс кодировщика JSON для использования. По умолчанию
JSONEncoder.Устаревшее с версии 2.2: Будет удалено в Flask 2.3. Настройте
json_provider_classвместо этого.Журнал изменений
Введено в версии 0.10.
-
json_provider_class -
Псевдоним
flask.json.provider.DefaultJSONProvider
-
log_exception(exc_info) -
Регистрирует исключение. Вызывается
handle_exception(), если отладка отключена и непосредственно перед вызовом обработчика. По умолчанию записывает исключение как ошибку вlogger.Журнал изменений
Введено в версии 0.8.
- Параметры
-
exc_info (Union[Tuple[type, BaseException, types.TracebackType], Tuple[None, None, None]]) –
- Тип возвращаемого значения
-
None
-
-
property logger: logging.Logger -
Стандартный Python
Loggerдля приложения, с именем, таким же какname.В режиме отладки уровень журнала
levelбудет установлен наDEBUG.Если обработчики не настроены, будет добавлен обработчик по умолчанию. Для получения дополнительной информации см. Ведение журнала.
Журнал изменений
Изменено в версии 1.1.0: Журнал принимает имя, совпадающее с
name, а не жестко заданное значение"flask.app".Изменено в версии 1.0.0: Поведение упрощено. Журнал всегда имеет имя
"flask.app". Уровень устанавливается только во время конфигурации, он не проверяетapp.debugкаждый раз. Используется только один формат, а не разные, в зависимости отapp.debug. Обработчики не удаляются, и обработчик добавляется только если обработчики не настроены.Добавлен в версии 0.3.
-
make_aborter() -
Создаёт объект для присваивания
aborter. Этот объект вызываетсяflask.abort()для повышения HTTP-ошибок и может быть вызван напрямую.По умолчанию создаёт экземпляр
aborter_class, который по умолчанию равенwerkzeug.exceptions.Aborter.Добавлен в версии 2.2.
- Тип возвращаемого значения
-
make_config(instance_relative=False) -
Используется для создания атрибута config конструктором Flask. Параметр
instance_relativeпередаётся из конструктора Flask (там он называетсяinstance_relative_config) и указывает, должна ли конфигурация быть относительной к пути экземпляра или корневому пути приложения.Журнал изменений
Добавлен в версии 0.8.
- Параметры
-
instance_relative (bool) –
- Тип возвращаемого значения
-
make_default_options_response() -
Этот метод вызывается для создания ответ по умолчанию
OPTIONS. Его можно изменить путём наследования для изменения поведения по умолчанию для ответовOPTIONS.Журнал изменений
Добавлен в версии 0.7.
- Тип возвращаемого значения
-
make_response(rv) -
Преобразует возвращаемое значение из функции представления в экземпляр
response_class.- Параметры
-
-
rv (Union[Response, str, bytes, Список[Любой], Отображение[str, Любой], Итератор[str], Итератор[bytes], Кортеж[Объединение[Response, str, bytes, Список[Любой], Отображение[str, Любой], Итератор[str], Итератор[bytes]], Объединение[Headers, Отображение[str, Объединение[str, Список[str], Кортеж[str, ...]]]], Последовательность[Кортеж[str, Объединение[str, Список[str], Кортеж[str, ...]]]]]], Кортеж[Объединение[Response, str, bytes, Список[Любой], Отображение[str, Любой], Итератор[str], Итератор[bytes]], int], Кортеж[Объединение[Response, str, bytes, Список[Любой], Отображение[str, Любой], Итератор[str], Итератор[bytes]], int, Объединение[Headers, Отображение[str, Объединение[str, Список[str], Кортеж[
-
str, ...]]], Sequence[Tuple[str, Union[str, List[str], Tuple[str, ...]]]]]]], WSGIApplication]) –
значение, возвращаемое функцией представления. Функция представления должна вернуть ответ. Возвращение
None, или завершение функции представления без возврата, запрещено. Дляview_rvразрешены следующие типы:-
str -
Объект ответа создается со строкой, закодированной в UTF-8, в качестве тела.
-
bytes -
Объект ответа создается с байтами в качестве тела.
-
dict -
Словарь, который будет сериализован в JSON перед возвратом.
-
list -
Список, который будет сериализован в JSON перед возвратом.
-
generator or iterator -
Генератор, который возвращает
strилиbytesдля потоковой передачи в качестве ответа. -
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-приложение. Результат используется для создания объекта ответа.
-
- Тип возвращаемого значения
Изменено в версии 2.2: Генератор будет преобразован в ответ потоковой передачи. Список будет преобразован в ответ JSON.
Журнал изменений
Изменено в версии 1.1: Словарь будет преобразован в ответ JSON.
Изменено в версии 0.9: Ранее кортеж интерпретировался как аргументы для объекта ответа.
-
make_shell_context() -
Возвращает контекст оболочки для интерактивной оболочки для этого приложения. Это выполняет все зарегистрированные обработчики контекста оболочки.
Журнал изменений
Добавлена в версии 0.11.
- Тип возвращаемого значения
-
property name: str -
Имя приложения. Обычно это имя импорта с отличием, что оно угадывается из файла запуска, если имя импорта равно main. Это имя используется как имя отображения, когда Flask нуждается в имени приложения. Его можно установить и переопределить, чтобы изменить значение.
Журнал изменений
Добавлена в версии 0.8.
-
open_instance_resource(resource, mode='rb') -
Открывает ресурс из папки экземпляра приложения (
instance_path). В противном случае работает какopen_resource(). Ресурсы экземпляра также можно открыть для записи.
-
open_resource(resource, mode='rb') -
Открывает файл ресурса, относящийся к
root_path, для чтения.Например, если файл
schema.sqlнаходится рядом с файломapp.py, где определено приложениеFlask, его можно открыть следующим образом:with app.open_resource("schema.sql") as f: conn.executescript(f.read())
-
patch(rule, **options) -
Сокращенная запись для
route()сmethods=["PATCH"].Журнал изменений
Добавлена в версии 2.0.
-
permanent_session_lifetime -
timedelta, используемая для установки даты истечения срока действия постоянной сессии. По умолчанию 31 день, что обеспечивает срок действия постоянной сессии примерно в один месяц.Этот атрибут также можно настроить из конфигурации с ключом конфигурации
PERMANENT_SESSION_LIFETIME. По умолчаниюtimedelta(days=31)
-
preprocess_request() -
Вызывается перед отправкой запроса. Вызывает зарегистрированные в приложении и текущем шаблоне
url_value_preprocessors. Затем вызывает зарегистрированные в приложении и шаблонеbefore_request_funcs.Если любой обработчик
before_request()возвращает значение, отличное от None, это значение обрабатывается так, как если бы оно было значением возврата представления, и дальнейшая обработка запроса останавливается.
-
- Тип возвращаемого значения
-
Optional[Union[Response, str, bytes, Список[Любой], Словарь[str, Любой], Итератор[str], Итератор[bytes], Кортеж[Объединение[Response, str, bytes, Список[Любой], Словарь[str, Любой], Итератор[str], Итератор[bytes]], Объединение[Headers, Словарь[str, Объединение[str, Список[str], Кортеж[str, …]]], Последовательность[Кортеж[str, Объединение[str, Список[str], Кортеж[str, …]]]]]], Кортеж[Объединение[Response, str, bytes, Список[Любой], Словарь[str, Любой], Итератор[str], Итератор[bytes]], int], Кортеж[Объединение[Response, str, bytes, Список[Любой], Словарь[str, Любой], Итератор[str], Итератор[bytes]], int, Объединение[Headers, Словарь[str, Объединение[str, Список[str], Кортеж[str, …]]], Последовательность[Кортеж[str, Объединение[str, Список[
-
-
process_response(response) -
Может быть переопределён для изменения объекта ответа перед отправкой на WSGI-сервер. По умолчанию вызываются все функции, декорированные
after_request().Журнал изменений
Изменено в версии 0.5: Начиная с Flask 0.5, функции, зарегистрированные для выполнения после запроса, вызываются в обратном порядке регистрации.
- Параметры
-
response (flask.wrappers.Response) – объект
response_class. - Возвращает
-
новый объект ответа или тот же, должен быть экземпляром
response_class. - Тип возвращаемого значения
-
property propagate_exceptions: bool -
Возвращает значение конфигурации
PROPAGATE_EXCEPTIONS, если оно установлено, иначе возвращает разумное значение по умолчанию.Устарело начиная с версии 2.2: Будет удалено в Flask 2.3.
Журнал изменений
Добавлена в версии 0.7.
-
put(rule, **options) -
Сокращение для
route()сmethods=["PUT"].Журнал изменений
Добавлена в версии 2.0.
-
redirect(location, code=302) -
Создать объект ответа перенаправления.
Вызывается функцией
flask.redirect(), и может быть вызван напрямую.- Параметры
- Тип возвращаемого значения
Добавлена в версии 2.2: Перемещена из
flask.redirect, который вызывает этот метод.
-
register_blueprint(blueprint, **options) -
Регистрация
Blueprintв приложении. Переданные ключевые аргументы переопределяют значения по умолчанию, установленные в синемпринте.Вызывает метод
register()синегопринта после записи синегопринта вblueprintsприложения.- Параметры
-
- blueprint (Blueprint) – Синийпринт для регистрации.
- url_prefix – Маршруты синегопринта будут иметь префикс.
- subdomain – Маршруты синегопринта будут соответствовать этому поддомену.
- url_defaults – Маршруты синегопринта будут использовать эти значения по умолчанию для аргументов представления.
-
options (Any) – Дополнительные ключевые аргументы передаются в
BlueprintSetupState. К ним можно получить доступ в обратных вызовахrecord().
- Тип возвращаемого значения
-
None
Журнал изменений
Изменено в версии 2.0.1: Опция
nameможет быть использована для изменения имени (с префиксом) синегопринта, с которым он регистрируется. Это позволяет зарегистрировать один и тот же синегопринт несколько раз с уникальными именами дляurl_for.Добавлена в версии 0.7.
-
register_error_handler(code_or_exception, f) -
Альтернативная функция добавления обработчика ошибок к декоратору
errorhandler(), которая более проста в использовании для случаев, не использующих декораторы.Журнал изменений
Добавлена в версии 0.7.
-
- f (Callable[[Any], Union[Response, str, bytes, List[Any], Mapping[str, Any], Iterator[str], Iterator[bytes], Tuple[Union[Response, str, bytes, List[Any], Mapping[str, Any], Iterator[str], Iterator[bytes]], Union[Headers, Mapping[str, Union[str, List[str], Tuple[str, ...]]]]]]], Sequence[Tuple[str, Union[str, List[str], Tuple[str, ...]]]]]], Tuple[Union[Response, str, bytes, List[Any], Mapping[str, Any], Iterator[str], Iterator[bytes]], int], Tuple[Union[Response, str, bytes, List[Any], Mapping[str, Any], Iterator[str], Iterator[bytes]], int, Union[Headers, Mapping[str, Union[str,
-
request_class -
псевдоним для
flask.wrappers.Request
-
request_context(environ) -
Создаёт
RequestContext, представляющий среду WSGI. Используйте блокwith, чтобы добавить контекст, что сделаетrequestссылкой на этот запрос.См. Контекст запроса.
Как правило, вы не должны вызывать этот метод из своего кода. Контекст запроса автоматически добавляется методом
wsgi_app()при обработке запроса. Используйтеtest_request_context()для создания среды и контекста вместо этого метода.- Параметры
-
environ (dict) – среда WSGI
- Тип возвращаемого значения
-
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добавляются автоматически.
-
run(host=None, port=None, debug=None, load_dotenv=True, **options) -
Запускает приложение на локальном сервере разработки.
Не используйте
run()в производственной среде. Она не предназначена для удовлетворения требований безопасности и производительности для сервера в производственной среде. Вместо этого см. Развёртывание в производство для рекомендаций по серверам WSGI.Если установлен флаг
debug, сервер автоматически перезагружается при изменении кода и отображает отладчик в случае возникновения исключения.Если нужно запустить приложение в отладочном режиме, но отключить выполнение кода в интерактивном отладчике, можно передать
use_evalex=Falseв качестве параметра. Это сохранит активный экран отладочного трассировки, но отключит выполнение кода.Не рекомендуется использовать эту функцию для разработки с автоматической перезагрузкой, так как она плохо поддерживается. Вместо этого следует использовать командную строку flask и её поддержку
run.Обратите внимание
Flask подавляет любые ошибки сервера с помощью общей страницы ошибок, если отладочный режим не включен. Таким образом, для включения только интерактивного отладчика без перезагрузки кода необходимо вызвать
run()сdebug=Trueиuse_reloader=False. Установкаuse_debuggerвTrueбез отладочного режима не позволит перехватить какие-либо исключения, потому что их не будет.- Параметры
-
-
host (Optional[str]) – имя хоста, на котором следует слушать. Установите значение
'0.0.0.0', чтобы сервер был доступен и внешним пользователям. По умолчанию'127.0.0.1'или хост в переменной конфигурацииSERVER_NAME(если она присутствует). -
port (Optional[int]) – порт веб-сервера. По умолчанию
5000или порт, определённый в переменной конфигурацииSERVER_NAME(если она присутствует). -
debug (Optional[bool]) – если задано, включить или отключить отладочный режим. См.
debug. -
load_dotenv (bool) – Загрузить ближайшие файлы
.envи.flaskenvдля установки переменных среды. Также изменит рабочую директорию на директорию, содержащую первый найденный файл. -
options (Any) – параметры, передаваемые базовому серверу Werkzeug. См.
werkzeug.serving.run_simple()для получения дополнительной информации.
-
host (Optional[str]) – имя хоста, на котором следует слушать. Установите значение
- Тип возвращаемого значения
-
None
Изменения
Изменено в версии 1.0: Если установлен python-dotenv, он будет использоваться для загрузки переменных среды из файлов
.envи.flaskenv.Переменная среды
FLASK_DEBUGпереопределитdebug.Режим потоков включен по умолчанию.
Изменено в версии 0.10: Порт по умолчанию теперь выбирается из переменной
SERVER_NAME.
-
secret_key -
Если ключ секретности установлен, криптографические компоненты могут использовать его для подписи куки и других данных. Установите его в сложное случайное значение, когда вы хотите использовать безопасные куки, например.
Этот атрибут также можно настроить из конфигурации с помощью ключа конфигурации
SECRET_KEY. По умолчаниюNone.
-
select_jinja_autoescape(filename) -
Возвращает
True, если автоматическая экранизация должна быть активной для данного имени шаблона. Если имя шаблона не указано, возвращаетTrue.Изменение истории
Новая в версии 0.5.
-
property send_file_max_age_default: Optional[datetime.timedelta] -
Значение по умолчанию для
max_ageдляsend_file(). По умолчаниюNone, что сообщает браузеру использовать условные запросы вместо кэширования по времени.Устарело начиная с версии 2.2: Будет удалено в Flask 2.3. Используйте
app.config["SEND_FILE_MAX_AGE_DEFAULT"]вместо этого.Изменение истории
Изменено в версии 2.0: По умолчанию
Noneвместо 12 часов.
-
send_static_file(filename) -
Функция представления, используемая для предоставления файлов из
static_folder. Маршрут автоматически зарегистрирован для этого представления по адресуstatic_url_path, еслиstatic_folderустановлен.Изменение истории
Новая в версии 0.5.
-
property session_cookie_name: str -
Имя куки, установленное интерфейсом сеанса.
Устарело начиная с версии 2.2: Будет удалено в Flask 2.3. Используйте
app.config["SESSION_COOKIE_NAME"]вместо этого.
-
session_interface: flask.sessions.SessionInterface = <flask.sessions.SecureCookieSessionInterface object> -
используемый интерфейс сеанса. По умолчанию здесь используется экземпляр
SecureCookieSessionInterface.Изменение истории
Новая в версии 0.8.
-
shell_context_processor(f) -
Регистрирует функцию обработчика контекста оболочки.
Изменение истории
Новая в версии 0.11.
- Параметры
-
f (flask.app.T_shell_context_processor) –
- Тип возвращаемого значения
-
flask.app.T_shell_context_processor
-
shell_context_processors: t.List[ft.ShellContextProcessorCallable] -
Список функций обработчиков контекста оболочки, которые должны выполняться при создании контекста оболочки.
Изменение истории
Новая в версии 0.11.
-
should_ignore_error(error) -
Вызывается для определения, следует ли игнорировать ошибку в контексте системы завершения работы. Если эта функция возвращает
True, обработчики завершения не получат ошибку.Изменение истории
Новая в версии 0.10.
- Параметры
-
error (Optional[BaseException]) –
- Тип возвращаемого значения
-
property static_folder: Optional[str] -
Абсолютный путь к папке со статическими файлами.
Noneесли папка со статическими файлами не задана.
-
property static_url_path: Optional[str] -
Префикс URL, с которого будет доступен статический маршрут.
Если он не был настроен при инициализации, он выводится из
static_folder.
-
teardown_appcontext(f) -
Регистрирует функцию, которая будет вызвана при извлечении контекста приложения. Контекст приложения обычно извлекается после контекста запроса для каждого запроса, в конце команд CLI или после завершения вручную добавленного контекста.
with app.app_context(): ...Когда блок
withзавершается (или вызываетсяctx.pop()), функции завершения вызываются непосредственно перед тем, как контекст приложения становится неактивным. Поскольку контекст запроса обычно также управляет контекстом приложения, он также будет вызван при извлечении контекста запроса.Когда функция завершения была вызвана из-за необработанной ошибки, ей будет передан объект ошибки. Если зарегистрирована функция
errorhandler(), она обработает исключение, и функция завершения не получит его.Функции завершения не должны вызывать исключения. Если они выполняют код, который может завершиться ошибкой, они должны поместить этот код в блок
try/exceptи записывать любые ошибки.Значения возврата функций завершения игнорируются.
Изменение истории
Новая в версии 0.9.
- Параметры
-
f (flask.app.T_teardown) –
- Тип возвращаемого значения
-
flask.app.T_teardown
-
teardown_appcontext_funcs: t.List[ft.TeardownCallable] -
Список функций, которые вызываются при уничтожении контекста приложения. Поскольку контекст приложения также уничтожается при завершении запроса, здесь можно разместить код, который отключается от баз данных.
Изменение истории
Новая в версии 0.9.
-
teardown_request(f) -
Регистрирует функцию, которая вызывается при извлечении контекста запроса. Обычно это происходит в конце каждого запроса, но контексты могут быть вручную добавлены и во время тестирования.
with app.test_request_context(): ...Когда блок
withзавершается (или вызываетсяctx.pop()), функции завершения вызываются непосредственно перед тем, как контекст запроса станет неактивным.Когда функция завершения была вызвана из-за необработанной ошибки, ей будет передан объект ошибки. Если зарегистрирована функция
errorhandler(), она обработает исключение, и функция завершения не получит его.Функции завершения не должны вызывать исключения. Если они выполняют код, который может завершиться ошибкой, они должны поместить этот код в блок
try/exceptи записывать любые ошибки.- Параметры
-
f (flask.scaffold.T_teardown) –
- Тип возвращаемого значения
-
flask.scaffold.T_teardown
-
teardown_request_funcs: t.Dict[ft.AppOrBlueprintKey, t.List[ft.TeardownCallable]] -
Структура данных функций, которые вызываются в конце каждого запроса, даже если возникает исключение, в формате
{scope: [functions]}. Ключscope— имя модуля, для которого активны функции, илиNoneдля всех запросов.Для регистрации функции используйте декоратор
teardown_request().Эта структура данных внутренняя. Ее не следует изменять напрямую, а ее формат может измениться в любое время.
-
-
template_context_processors: t.Dict[ft.AppOrBlueprintKey, t.List[ft.TemplateContextProcessorCallable]] -
Структура данных функций для вызова, чтобы передавать дополнительные значения контекста при рендеринге шаблонов, в формате
{scope: [functions]}. Ключscope— имя голубопечати (blueprint), для которой активны функции, илиNoneдля всех запросов.Для регистрации функции используйте декоратор
context_processor().Эта структура данных внутренняя. Не следует изменять её напрямую, и её формат может измениться в любое время.
-
template_filter(name=None) -
Декоратор, используемый для регистрации пользовательских фильтров шаблонов. Вы можете указать имя фильтра; в противном случае будет использовано имя функции. Пример:
@app.template_filter() def reverse(s): return s[::-1]
-
template_folder -
Путь к папке с шаблонами, относительно
root_path, который добавляется к загрузчику шаблонов.Noneесли шаблоны не нужно добавлять.
-
template_global(name=None) -
Декоратор, используемый для регистрации пользовательской глобальной функции шаблона. Вы можете указать имя глобальной функции; в противном случае будет использовано имя функции. Пример:
@app.template_global() def double(n): return 2 * nИзменения
В версии 0.10.
-
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.
-
property templates_auto_reload: bool -
Перезагружать шаблоны при их изменении. Используется
create_jinja_environment(). Включено по умолчанию в режиме отладки.Устарело начиная с версии 2.2: Будет удалено в Flask 2.3. Используйте
app.config["TEMPLATES_AUTO_RELOAD"]вместо этого.Изменения
В версии 1.0: Это свойство было добавлено, но лежащая в основе конфигурация и поведение уже существовали.
-
test_cli_runner(**kwargs) -
Создаёт CLI-запускатель для тестирования команд CLI. Смотрите Запуск команд с помощью CLI-запускателя.
Возвращает экземпляр
test_cli_runner_class, по умолчаниюFlaskCliRunner. Объект приложения Flask передаётся в качестве первого аргумента.Изменения
В версии 1.0.
- Параметры
-
kwargs (Any) —
- Тип возвращаемого значения
-
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для клиента.- Параметры
- Тип возвращаемого значения
-
test_client_class: Optional[Type[FlaskClient]] = None -
Метод
test_client()создаёт экземпляр этого класса тестового клиента. По умолчанию —FlaskClient.Изменения
В версии 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()
Принимает те же аргументы, что и
EnvironBuilderWerkzeug, с некоторыми значениями по умолчанию из приложения. Более подробную информацию об доступных аргументах см. в документации 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 (Any) – другие позиционные аргументы, переданные в
EnvironBuilder. -
kwargs (Any) – другие ключевые аргументы, переданные в
EnvironBuilder.
- Тип возвращаемого значения
-
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.Изменения
Изменено в версии 1.0: Ошибки плохого запроса по умолчанию не перехватываются в отладочном режиме.
Добавлен в версии 0.8.
- Параметры
-
e (Исключение) –
- Тип возвращаемого значения
-
update_template_context(context) -
Обновить контекст шаблона с помощью некоторых часто используемых переменных. Это вставляет request, session, config и g в контекст шаблона, а также все, что процессоры контекста шаблона хотят вставить. Обратите внимание, что, начиная с Flask 0.6, исходные значения в контексте не будут перезаписаны, если процессор контекста решит вернуть значение с тем же ключом.
- Параметры
-
context (dict) – контекст в виде словаря, который обновляется на месте для добавления дополнительных переменных.
- Тип возвращаемого значения
-
None
-
url_build_error_handlers: t.List[t.Callable[[Exception, str, t.Dict[str, t.Any]], str]] -
Список функций, вызываемых
handle_url_build_error(), когдаurl_for()вызываетBuildError. Каждая функция вызывается сerror,endpointиvalues. Если функция возвращаетNoneили вызывает исключениеBuildError, она пропускается. В противном случае её возвращаемое значение возвращаетсяurl_for.Изменения
Добавлен в версии 0.9.
-
url_default_functions: t.Dict[ft.AppOrBlueprintKey, t.List[ft.URLDefaultCallable]] -
Структура данных функций, которые вызываются для изменения ключевых аргументов при генерации URL-адресов в формате
{scope: [functions]}. Ключscope— имя схемы, для которой активны функции, илиNoneдля всех запросов.Для регистрации функции используйте декоратор
url_defaults().Эта структура данных является внутренней. Её не следует изменять напрямую, и её формат может измениться в любой момент.
-
url_defaults(f) -
Обратная функция для значений по умолчанию URL-адресов для всех функций представления приложения. Она вызывается с именем конечной точки и значениями и должна обновить переданные значения на месте.
- Параметры
-
f (flask.scaffold.T_url_defaults) –
- Тип возвращаемого значения
-
flask.scaffold.T_url_defaults
-
-
url_for(endpoint, *, _anchor=None, _method=None, _scheme=None, _external=None, **values) -
Генерирует URL для указанного конечной точки с заданными значениями.
Вызывается функцией
flask.url_for(), а также может быть вызвана непосредственно.Конечная точка — это имя правила URL, обычно добавляемое с помощью
@app.route()и, как правило, совпадает с именем функции представления. Маршрут, определённый вBlueprint, будет добавлять имя блинкетпа, разделенное., к конечной точке.В некоторых случаях, например, в сообщениях электронной почты, вам нужны URL, включающие схему и домен, как
https://example.com/hello. Когда URL не создаётся в рамках активного запроса, по умолчанию используются внешние URL, но для этого необходимо установитьSERVER_NAME, чтобы Flask знал, какой домен использовать.APPLICATION_ROOTиPREFERRED_URL_SCHEMEтакже должны быть настроены по мере необходимости. Эта настройка используется только при отсутствии активного запроса.Функции могут быть декорированы с помощью
url_defaults(), чтобы изменить ключевые аргументы перед построением URL.Если построение URL по какой-либо причине завершится неудачей, например, из-за неизвестной конечной точки или некорректных значений, вызывается метод приложения
handle_url_build_error(). Если этот метод возвращает строку, она возвращается; в противном случае генерируетсяBuildError.- Параметры
-
-
endpoint (str) – Имя конечной точки, связанной с URL, который нужно сгенерировать. Если оно начинается с
., используется текущее имя блинкетпа (если оно есть). -
_anchor (Optional[str]) – Если указано, добавляется как
#anchorк URL. - _method (Optional[str]) – Если указано, генерируется URL, связанный с этим методом для конечной точки.
- _scheme (Optional[str]) – Если указано, URL будет иметь эту схему, если это внешний URL.
- _external (Optional[bool]) – Если указано, предпочтительно использовать внутренний URL (False) или требуется внешний URL (True). Внешние URL включают схему и домен. Когда URL не создаётся в рамках активного запроса, по умолчанию используются внешние URL.
-
values (Any) – Значения для использования в переменных частях правила URL. Неизвестные ключи добавляются как аргументы строки запроса, как
?a=b&c=d.
-
endpoint (str) – Имя конечной точки, связанной с URL, который нужно сгенерировать. Если оно начинается с
- Тип возвращаемого значения
Новая версия с версии 2.2: Перемещена из
flask.url_for, которая вызывает этот метод.
-
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.Map
-
url_rule_class -
Псевдоним для
werkzeug.routing.rules.Rule
-
url_value_preprocessor(f) -
Регистрирует функцию предобработки значений URL для всех функций представлений в приложении. Эти функции вызываются перед функциями
before_request().Функция может изменять значения, полученные из сопоставленного URL, прежде чем они будут переданы представлению. Например, это можно использовать для извлечения общего кода языка и размещения его в
gвместо передачи его каждому представлению.Функции передаются имя конечной точки и словарь значений. Возвращаемое значение игнорируется.
- Параметры
-
f (flask.scaffold.T_url_value_preprocessor) –
- Тип возвращаемого значения
-
flask.scaffold.T_url_value_preprocessor
-
url_value_preprocessors: t.Dict[ft.AppOrBlueprintKey, t.List[ft.URLValuePreprocessorCallable]] -
Структура данных функций для вызова, чтобы изменить ключевые аргументы, передаваемые функции представления, в формате
{scope: [functions]}. Ключscope— имя блинкетпа, для которого активны функции, илиNoneдля всех запросов.Для регистрации функции используйте декоратор
url_value_preprocessor().Эта структура данных внутренняя. Она не должна изменяться напрямую, и её формат может измениться в любое время.
-
property use_x_sendfile: bool -
Включите эту опцию, чтобы использовать функцию
X-Sendfile, если сервер её поддерживает, изsend_file().Устарело с версии 2.2: Будет удалено в Flask 2.3. Используйте
app.config["USE_X_SENDFILE"]вместо этого.
-
view_functions: t.Dict[str, t.Callable] -
Словарь, сопоставляющий имена конечных точек с функциями представлений.
Для регистрации функции представления используйте декоратор
route().Эта структура данных внутренняя. Она не должна изменяться напрямую, и её формат может измениться в любое время.
-
wsgi_app(environ, start_response) -
Файл WSGI приложения. Это не реализовано в
__call__(), чтобы средствами middleware можно было работать, не теряя ссылку на объект приложения. Вместо этого:app = MyMiddleware(app)
Лучше сделать так:
app.wsgi_app = MyMiddleware(app.wsgi_app)
Тогда у вас всё ещё есть исходный объект приложения и вы можете продолжить вызывать его методы.
Changelog
Изменено в версии 0.7: События завершения для контекстов запроса и приложения вызываются даже если произошла необработанная ошибка. Другие события могут не вызываться в зависимости от того, когда во время обработки произошла ошибка. См. Обработчики событий и ошибки.
-
Объекты шаблонов
-
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>) -
Представляет шаблон, коллекцию маршрутов и других функций, связанных с приложением, которые могут быть зарегистрированы в реальном приложении позже.
Шаблон — это объект, который позволяет определять функции приложения, не требуя предварительного объекта приложения. Он использует те же декораторы, что и
Flask, но откладывает необходимость в приложении, записывая их для последующей регистрации.Декорирование функции с помощью шаблона создаёт отложенную функцию, которая вызывается с
BlueprintSetupStateпри регистрации шаблона в приложении.См. Модульные приложения с шаблонами для получения дополнительной информации.
- Параметры
-
- name (str) – Имя шаблона. Будет добавляться к каждому имени конечной точки.
-
import_name (str) – Имя пакета шаблона, обычно
__name__. Это помогает найтиroot_pathдля шаблона. - static_folder (Optional[Union[str, os.PathLike]]) – Папка со статическими файлами, которые должны обслуживаться статическим маршрутом шаблона. Путь относительный к корневому пути шаблона. Статические файлы шаблонов по умолчанию отключены.
-
static_url_path (Optional[str]) – URL для обслуживания статических файлов. По умолчанию
static_folder. Если у шаблона нетurl_prefix, статический маршрут приложения будет иметь приоритет, и статические файлы шаблона будут недоступны. - template_folder (Optional[str]) – Папка с шаблонами, которые должны быть добавлены в путь поиска шаблонов приложения. Путь относительный к корневому пути шаблона. Шаблоны шаблона по умолчанию отключены. Шаблоны шаблона имеют меньший приоритет, чем шаблоны в папке шаблонов приложения.
- url_prefix (Optional[str]) – Путь, который должен быть добавлен ко всем URL-адресам шаблона, чтобы отличить их от других маршрутов приложения.
- subdomain (Optional[str]) – Поддомен, на котором маршруты шаблона будут по умолчанию соответствовать.
- url_defaults (Optional[dict]) – Словарь значений по умолчанию, которые маршруты шаблона будут получать по умолчанию.
-
root_path (Optional[str]) – По умолчанию шаблон автоматически задаёт это значение на основе
import_name. В некоторых ситуациях это автоматическое определение может не сработать, поэтому путь можно указать вручную. - cli_group (Optional[str]) –
Изменения
Изменено в версии 1.1.0: У шаблонов есть группа
cliдля регистрации вложенных команд CLI. Параметрcli_groupуправляет именем группы под командойflask.Добавлен в версии 0.7.
-
add_app_template_filter(f, name=None) -
Регистрирует пользовательский фильтр шаблонов, доступный во всём приложении. Как
Flask.add_template_filter(), но для шаблона. Работает точно так же, как декораторapp_template_filter().
-
add_app_template_global(f, name=None) -
Регистрирует пользовательскую глобальную переменную шаблона, доступную во всём приложении. Как
Flask.add_template_global(), но для шаблона. Работает точно так же, как декораторapp_template_global().Изменения
Добавлен в версии 0.10.
-
add_app_template_test(f, name=None) -
Регистрирует пользовательский тест шаблона, доступный во всём приложении. Как
Flask.add_template_test(), но для шаблона. Работает точно так же, как декораторapp_template_test().Изменения
Добавлен в версии 0.10.
-
add_url_rule(rule, endpoint=None, view_func=None, provide_automatic_options=None, **options) -
Как
Flask.add_url_rule(), но для схемы. Точка входа для функцииurl_for()имеет префикс с именем схемы.
-
- view_func (Optional[Union[Callable[[...], Union[Response, str, bytes, Список[Любой], Отображение[str, Любой], Итератор[str], Итератор[bytes], Кортеж[Union[Response, str, bytes, Список[Любой], Отображение[str, Любой], Итератор[str], Итератор[bytes]], Union[Headers, Отображение[str, Union[str, Список[str], Кортеж[str, ...]]], Последовательность[Кортеж[str, Union[str, Список[str], Кортеж[str, ...]]]]]], Кортеж[Union[Response, str, bytes, Список[Любой], Отображение[str, Любой], Итератор[str], Итератор[bytes]], int], Кортеж[Union[Response, str, bytes, Список[Любой], Отображение[str, Любой], Итератор[str], Итератор[bytes]], int, Union[Headers, Отображение[str, Union[
- str, List[str], Tuple[str, ...]]], Sequence[Tuple[str, Union[str, List[str], Tuple[str, ...]]]]], WSGIApplication]], Callable[[...], Awaitable[Union[Response, str, bytes, List[Any], Mapping[str, Any], Iterator[str], Iterator[bytes], Tuple[Union[Response, str, bytes, List[Any], Mapping[str, Any], Iterator[str], Iterator[bytes]], Union[Headers, Mapping[str, Union[str, List[str], Tuple[str, ...]]], Sequence[Tuple[str, Union[str, List[str], Tuple[str, ...]]]]]], Tuple[Union[Response, str, bytes, List[Any], Mapping[str, Any], Iterator[str], Iterator[bytes]], int], Tuple[Union[Response, str, bytes,
- List[Любой], Отображение[str, Любой], Итератор[str], Итератор[bytes]], int, Объединение[Headers, Отображение[str, Объединение[str, Список[str], Кортеж[str, ...]]], Последовательность[Кортеж[str, Объединение[str, Список[str], Кортеж[str, ...]]]]]], WSGIApplication]]]]]) –
- provide_automatic_options (Необязательно[bool]) –
- options (Любой) –
- Тип возвращаемого значения
-
None
- Return type
-
None
-
after_app_request(f) -
Подобно
Flask.after_request(), но для шаблона. Такая функция выполняется после каждого запроса, даже если за пределами шаблона.- Параметры
-
f (flask.blueprints.T_after_request) –
- Тип возвращаемого значения
-
flask.blueprints.T_after_request
-
after_request(f) -
Регистрирует функцию для выполнения после каждого запроса к этому объекту.
Функция вызывается с объектом ответа и должна вернуть объект ответа. Это позволяет функциям изменять или заменять ответ перед его отправкой.
Если функция вызывает исключение, любые оставшиеся
after_requestфункции не будут вызваны. Поэтому это не следует использовать для действий, которые должны выполняться, таких как закрытие ресурсов. Используйтеteardown_request()для этого.- Параметры
-
f (flask.scaffold.T_after_request) –
- Тип возвращаемого значения
-
flask.scaffold.T_after_request
-
after_request_funcs: t.Dict[ft.AppOrBlueprintKey, t.List[ft.AfterRequestCallable]] -
Структура данных функций для вызова в конце каждого запроса в формате
{scope: [functions]}. Ключscope— имя шаблона, для которого функции активны, илиNoneдля всех запросов.Для регистрации функции используйте декоратор
after_request().Эта структура данных внутренняя. Не следует изменять её напрямую, и её формат может измениться в любое время.
-
app_context_processor(f) -
Подобно
Flask.context_processor(), но для шаблона. Такая функция выполняется при каждом запросе, даже если за пределами шаблона.- Параметры
-
f (flask.blueprints.T_template_context_processor) –
- Тип возвращаемого значения
-
flask.blueprints.T_template_context_processor
-
app_errorhandler(code) -
Подобно
Flask.errorhandler(), но для шаблона. Этот обработчик используется для всех запросов, даже если за пределами шаблона.- Параметры
-
code (Объединение[Тип[Исключение], int]) –
- Тип возвращаемого значения
-
Вызываемая функция[[flask.blueprints.T_error_handler], flask.blueprints.T_error_handler]
-
app_template_filter(name=None) -
Регистрирует пользовательский фильтр шаблона, доступный на уровне всей программы. Подобно
Flask.template_filter(), но для шаблона.- Параметры
-
name (Необязательно[str]) – необязательное имя фильтра, в противном случае будет использовано имя функции.
- Тип возвращаемого значения
-
Вызываемая функция[[flask.blueprints.T_template_filter], flask.blueprints.T_template_filter]
-
app_template_global(name=None) -
Регистрирует пользовательскую глобальную переменную шаблона, доступную на уровне всей программы. Подобно
Flask.template_global(), но для шаблона.Изменения
Новое в версии 0.10.
- Параметры
-
name (Необязательно[str]) – необязательное имя глобальной переменной, в противном случае будет использовано имя функции.
- Тип возвращаемого значения
-
Вызываемая функция[[flask.blueprints.T_template_global], flask.blueprints.T_template_global]
-
app_template_test(name=None) -
Регистрация пользовательского шаблона-теста, доступного на уровне приложения. Подобно
Flask.template_test(), но для голубопечати.Журнал изменений
Введено в версии 0.10.
-
app_url_defaults(f) -
Аналогично
url_defaults(), но на уровне всего приложения.- Параметры
-
f (flask.blueprints.T_url_defaults) –
- Тип возвращаемого значения
-
flask.blueprints.T_url_defaults
-
app_url_value_preprocessor(f) -
Аналогично
url_value_preprocessor(), но на уровне всего приложения.- Параметры
-
f (flask.blueprints.T_url_value_preprocessor) –
- Тип возвращаемого значения
-
flask.blueprints.T_url_value_preprocessor
-
before_app_first_request(f) -
Подобно
Flask.before_first_request(). Такая функция выполняется перед первым запросом к приложению.Устарело начиная с версии 2.2: Будет удалено в Flask 2.3. Вместо этого выполняйте код настройки при создании приложения.
- Параметры
-
f (flask.blueprints.T_before_first_request) –
- Тип возвращаемого значения
-
flask.blueprints.T_before_first_request
-
before_app_request(f) -
Подобно
Flask.before_request(). Такая функция выполняется перед каждым запросом, даже если за пределами голубопечати.- Параметры
-
f (flask.blueprints.T_before_request) –
- Тип возвращаемого значения
-
flask.blueprints.T_before_request
-
before_request(f) -
Регистрация функции для выполнения перед каждым запросом.
Например, это можно использовать для открытия подключения к базе данных или загрузки авторизованного пользователя из сессии.
@app.before_request def load_user(): if "user_id" in session: g.user = db.session.get(session["user_id"])Функция будет вызвана без аргументов. Если она возвращает значение, отличное от
None, это значение обрабатывается как результат представления, и дальнейшая обработка запроса прекращается.- Параметры
-
f (flask.scaffold.T_before_request) –
- Тип возвращаемого значения
-
flask.scaffold.T_before_request
-
before_request_funcs: t.Dict[ft.AppOrBlueprintKey, t.List[ft.BeforeRequestCallable]] -
Структура данных функций, вызываемых в начале каждого запроса, в формате
{scope: [functions]}. Ключscope— имя голубопечати, для которой активны функции, илиNoneдля всех запросов.Для регистрации функции используйте декоратор
before_request().Эта структура данных является внутренней. Не следует изменять ее напрямую, и ее формат может изменяться в любое время.
-
cli -
Группа команд Click для регистрации команд CLI для этого объекта. Команды доступны из команды
flaskпосле обнаружения приложения и регистрации голубопечатных.
-
context_processor(f) -
Регистрирует функцию-обработчик контекста шаблона.
- Параметры
-
f (flask.scaffold.T_template_context_processor) –
- Тип возвращаемого значения
-
flask.scaffold.T_template_context_processor
-
delete(rule, **options) -
Сокращение для
route()сmethods=["DELETE"].Журнал изменений
Введено в версии 2.0.
-
endpoint(endpoint) -
Декорирование функции-представления для регистрации ее для заданного конечной точки. Используется, если правило добавлено без
view_funcс помощьюadd_url_rule().app.add_url_rule("/ex", endpoint="example") @app.endpoint("example") def example(): ...
-
error_handler_spec: t.Dict[ft.AppOrBlueprintKey, t.Dict[t.Optional[int], t.Dict[t.Type[Exception], ft.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.
-
get(rule, **options) -
Сокращение для
route()сmethods=["GET"].Журнал изменений
Новое в версии 2.0.
-
get_send_file_max_age(filename) -
Используется
send_file()для определения значения кешированияmax_ageдля заданного пути к файлу, если оно не было передано.По умолчанию возвращает
SEND_FILE_MAX_AGE_DEFAULTиз конфигурацииcurrent_app. По умолчанию этоNone, что сообщает браузеру использовать условные запросы вместо временного кэша, что обычно предпочтительнее.Журнал изменений
Изменено в версии 2.0: Значение по умолчанию в конфигурации
Noneвместо 12 часов.Новое в версии 0.9.
-
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.
-
property json_decoder: Optional[Type[json.decoder.JSONDecoder]] -
Локальный для Blueprint класс декодера JSON для использования. Установлено в
Noneдля использования кода приложения.Устарело начиная с версии 2.2: Будет удалено в Flask 2.3. Настройте
json_provider_classвместо этого.Журнал изменений
Новое в версии 0.10.
-
property json_encoder: Optional[Type[json.encoder.JSONEncoder]] -
Локальный для Blueprint класс кодировщика JSON для использования. Установлено в
Noneдля использования кода приложения.Устарело начиная с версии 2.2: Будет удалено в Flask 2.3. Настройте
json_provider_classвместо этого.Журнал изменений
Новое в версии 0.10.
-
make_setup_state(app, options, first_registration=False) -
Создаёт экземпляр объекта
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())
-
-
patch(rule, **options) -
Сокращение для
route()сmethods=["PATCH"].Changelog
Новое в версии 2.0.
-
post(rule, **options) -
Сокращение для
route()сmethods=["POST"].Changelog
Новое в версии 2.0.
-
put(rule, **options) -
Сокращение для
route()сmethods=["PUT"].Changelog
Новое в версии 2.0.
-
record(func) -
Регистрирует функцию, которая вызывается при регистрации бланкета на приложении. Эта функция вызывается с состоянием в качестве аргумента, возвращаемым методом
make_setup_state().- Параметры
-
func (Callable) –
- Тип возвращаемого значения
-
None
-
record_once(func) -
Работает как
record(), но оборачивает функцию в другую функцию, которая гарантирует, что функция будет вызвана только один раз. Если бланкет зарегистрирован второй раз в приложении, переданная функция не вызывается.- Параметры
-
func (Callable) –
- Тип возвращаемого значения
-
None
-
register(app, options) -
Вызывается
Flask.register_blueprint()для регистрации всех представлений и обратных вызовов, зарегистрированных в бланкете, с приложением. СоздаётBlueprintSetupStateи вызывает каждый обратный вызовrecord()с ним.- Параметры
-
- app (Flask) – Приложение, с которым регистрируется бланкет.
-
options (dict) – Аргументы ключевых слов, переданные из
register_blueprint().
- Тип возвращаемого значения
-
None
Changelog
Изменено в версии 2.0.1: Вложенные бланкеты регистрируются с их точечным именем. Это позволяет различным бланкетам с одинаковым именем быть вложенными в различных местах.
Изменено в версии 2.0.1: Опция
nameможет использоваться для изменения (предварительно точечного) имени, с которым регистрируется бланкет. Это позволяет регистрировать один и тот же бланкет несколько раз с уникальными именами дляurl_for.Изменено в версии 2.0.1: Регистрация одного и того же бланкета с одинаковым именем несколько раз устарела и станет ошибкой в Flask 2.1.
-
register_blueprint(blueprint, **options) -
Регистрирует
Blueprintв этом бланкете. Аргументы ключевых слов, переданные в этот метод, переопределят значения по умолчанию, заданные в бланкете.Changelog
Изменено в версии 2.0.1: Опция
nameможет использоваться для изменения (предварительно точечного) имени, с которым регистрируется бланкет. Это позволяет регистрировать один и тот же бланкет несколько раз с уникальными именами дляurl_for.Новое в версии 2.0.
- Параметры
-
- blueprint (flask.blueprints.Blueprint) –
- options (Any) –
- Тип возвращаемого значения
-
None
-
register_error_handler(code_or_exception, f) -
Альтернативная функция для присоединения обработчика ошибок к декоратору
errorhandler(), которая более удобна для использования без декораторов.Changelog
Новое в версии 0.7.
-
- f (Callable[[Any], Union[Response, str, bytes, List[Any], Mapping[str, Any], Iterator[str], Iterator[bytes], Tuple[Union[Response, str, bytes, List[Any], Mapping[str, Any], Iterator[str], Iterator[bytes]], Union[Headers, Mapping[str, Union[str, List[str], Tuple[str, ...]]]], Sequence[Tuple[str, Union[str, List[str], Tuple[str, ...]]]]]], Tuple[Union[Response, str, bytes, List[Any], Mapping[str, Any], Iterator[str], Iterator[bytes]], int], Tuple[Union[Response, str, bytes, List[Any], Mapping[str, Any], Iterator[str], Iterator[bytes]], int, Union[Headers, Mapping[str, Union[str,
-
root_path -
Абсолютный путь к пакету в файловой системе. Используется для поиска ресурсов, содержащихся в пакете.
-
route(rule, **options) -
Декорирует функцию представления для регистрации её с заданным правилом URL и параметрами. Вызывает
add_url_rule(), в которой содержатся более подробные сведения об реализации.@app.route("/") def index(): return "Hello, World!"См. Регистрации правил маршрутов URL.
Имя конечной точки маршрута по умолчанию соответствует имени функции представления, если параметр
endpointне передан.Параметр
methodsпо умолчанию равен["GET"].HEADиOPTIONSдобавляются автоматически.
-
send_static_file(filename) -
Функция представления, используемая для обработки файлов из
static_folder. Маршрут для этого представления автоматически регистрируется по адресуstatic_url_path, еслиstatic_folderзадан.Журнал изменений
Введено в версии 0.5.
-
property static_folder: Optional[str] -
Абсолютный путь к настроенной папке статических файлов.
Noneесли папка статических файлов не задана.
-
property static_url_path: Optional[str] -
Префикс URL, с которого доступен статический маршрут.
Если он не был настроен во время инициализации, он выводится из
static_folder.
-
teardown_app_request(f) -
Как
Flask.teardown_request(), но для шаблона. Такая функция выполняется при разборе каждого запроса, даже если она находится за пределами шаблона.- Параметры
-
f (flask.blueprints.T_teardown) –
- Тип возвращаемого значения
-
flask.blueprints.T_teardown
-
teardown_request(f) -
Регистрирует функцию, которая вызывается при извлечении контекста запроса. Как правило, это происходит в конце каждого запроса, но контексты могут также вручную помещаться во время тестирования.
with app.test_request_context(): ...Когда блок
withзавершается (или вызываетсяctx.pop()), функции разбора вызываются непосредственно перед тем, как контекст запроса становится неактивным.Когда функция разбора была вызвана из-за необработанного исключения, ей будет передан объект ошибки. Если зарегистрирован
errorhandler(), он обработает исключение, и функция разбора его не получит.Функции разбора не должны генерировать исключения. Если они выполняют код, который может потерпеть неудачу, они должны окружать этот код блоком
try/exceptи регистрировать любые ошибки.Значения возврата функций разбора игнорируются.
- Параметры
-
f (flask.scaffold.T_teardown) –
- Тип возвращаемого значения
-
flask.scaffold.T_teardown
-
teardown_request_funcs: t.Dict[ft.AppOrBlueprintKey, t.List[ft.TeardownCallable]] -
Структура данных функций, которые вызываются в конце каждого запроса, даже если возникло исключение, в формате
{scope: [functions]}. Ключscope— имя шаблона, для которого активны функции, илиNoneдля всех запросов.Для регистрации функции используйте декоратор
teardown_request().Эта структура данных является внутренней. Она не должна изменяться напрямую, и её формат может изменяться в любое время.
-
template_context_processors: t.Dict[ft.AppOrBlueprintKey, t.List[ft.TemplateContextProcessorCallable]] -
Структура данных функций, которые вызываются для передачи дополнительных значений контекста при рендеринге шаблонов, в формате
{scope: [functions]}. Ключscope— имя шаблона, для которого активны функции, илиNoneдля всех запросов.Для регистрации функции используйте декоратор
context_processor().Эта структура данных является внутренней. Она не должна изменяться напрямую, и её формат может изменяться в любое время.
-
template_folder -
Путь к папке шаблонов, относительный к
root_path, для добавления в загрузчик шаблонов.Noneесли шаблоны не должны добавляться.
-
url_default_functions: t.Dict[ft.AppOrBlueprintKey, t.List[ft.URLDefaultCallable]] -
Структура данных функций, которые вызываются для изменения ключевых аргументов при генерации URL-адресов, в формате
{scope: [functions]}. Ключscope— имя шаблона, для которого активны функции, илиNoneдля всех запросов.Для регистрации функции используйте декоратор
url_defaults().Эта структура данных является внутренней. Она не должна изменяться напрямую, и её формат может изменяться в любое время.
-
url_defaults(f) -
Функция обратного вызова для значений по умолчанию URL для всех функций представления приложения. Она вызывается с конечной точкой и значениями и должна обновить передаваемые значения на месте.
- Параметры
-
f (flask.scaffold.T_url_defaults) –
- Тип возвращаемого значения
-
flask.scaffold.T_url_defaults
-
url_value_preprocessor(f) -
Зарегистрировать функцию предварительной обработки значений URL для всех функций представления в приложении. Эти функции будут вызываться перед функциями
before_request().Функция может изменять значения, полученные из сопоставленного URL, перед тем как они будут переданы представлению. Например, это можно использовать для извлечения общего кода языка и размещения его в
gвместо передачи его каждому представлению.Функции передаются имя конечной точки и словарь значений. Возвращаемое значение игнорируется.
- Параметры
-
f (flask.scaffold.T_url_value_preprocessor) –
- Тип возвращаемого значения
-
flask.scaffold.T_url_value_preprocessor
-
url_value_preprocessors: t.Dict[ft.AppOrBlueprintKey, t.List[ft.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.- Параметры
- Тип возвращаемого значения
-
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-адресов от IP-адреса клиента до последнего прокси-сервера.
-
classmethod application(f) -
Декорирует функцию как ответчик, который принимает запрос в качестве последнего аргумента. Это работает как
responder()декоратор, но функция получает объект запроса в качестве последнего аргумента, а объект запроса автоматически закрывается:@Request.application def my_wsgi_app(request): return Response('Hello World!')Начиная с Werkzeug 0.14, HTTP-исключения автоматически обрабатываются и преобразуются в ответы, вместо того, чтобы вызывать ошибку.
-
property args: werkzeug.datastructures.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] -
Зарегистрированное имя текущего blueprint.
Будет
None, если конечная точка не принадлежит blueprint, или если сопоставление URL не выполнено или ещё не выполнено.Это не обязательно соответствует имени, с которым blueprint был создан. Он может быть вложен или зарегистрирован под другим именем.
-
property blueprints: List[str] -
Зарегистрированные имена текущего blueprint и родительских blueprint.
Будет пустым списком, если нет текущего blueprint или если сопоставление URL не выполнено.
Changelog
New in version 2.0.1.
-
property cache_control: werkzeug.datastructures.RequestCacheControl -
Объект
RequestCacheControlдля входящих заголовков управления кешем.
-
close() -
Закрывает связанные ресурсы этого объекта запроса. Это закрывает все дескрипторы файлов явно. Вы также можете использовать объект запроса в операторе with, который автоматически его закроет.
Changelog
New in version 0.9.
- Тип возвращаемого значения
-
None
-
content_encoding -
Поле заголовка сущности Content-Encoding используется как модификатор типа среды. При его наличии его значение указывает, какие дополнительные кодировки содержимого были применены к телу сущности, а следовательно, какие механизмы декодирования должны быть применены для получения типа среды, на который ссылается поле заголовка Content-Type.
Changelog
New in version 0.9.
-
property content_length: Optional[int] -
Поле заголовка сущности Content-Length указывает размер тела сущности в байтах или, в случае метода HEAD, размер тела сущности, который был бы отправлен, если бы запрос был GET.
-
content_md5 -
Поле заголовка сущности Content-MD5, как определено в RFC 1864, представляет собой дайджест MD5 тела сущности с целью обеспечения проверки целостности сообщения от конца до конца (MIC) тела сущности. (Примечание: MIC хорошо подходит для обнаружения случайных изменений тела сущности во время передачи, но не является доказательством против злонамеренных атак.)
Changelog
New in version 0.9.
-
content_type -
Поле заголовка сущности Content-Type указывает тип среды тела сущности, отправляемого получателю, или, в случае метода HEAD, тип среды, который был бы отправлен, если бы запрос был GET.
-
property cookies: werkzeug.datastructures.ImmutableMultiDict[str, str] -
dictс содержимым всех cookie, переданных вместе с запросом.
-
property data: bytes -
Содержит данные входящего запроса как строку в случае, если они были отправлены с MIME-типом, который Werkzeug не обрабатывает.
-
date -
Поле общего заголовка Date представляет собой дату и время, в которые было создано сообщение, имея те же семантические значения, что и orig-date в RFC 822.
Changelog
Изменено в версии 2.0: Объект datetime является timezone-aware.
-
dict_storage_class
-
property endpoint: Optional[str] -
Конечная точка, соответствующая адресу запроса.
Будет
Noneв случае неудачного сопоставления или если сопоставление ещё не выполнено.В сочетании с
view_argsможет использоваться для восстановления исходного или изменённого адреса.
-
environ: WSGIEnvironment -
WSGI-среда, содержащая HTTP-заголовки и информацию от WSGI-сервера.
-
property files: werkzeug.datastructures.ImmutableMultiDict[str, werkzeug.datastructures.FileStorage] -
MultiDictобъект, содержащий все загруженные файлы. Каждый ключ вfilesсоответствует имени из<input type="file" name="">. Каждое значение вfiles— объект WerkzeugFileStorage.В основном он ведет себя как стандартный объект файла в Python, с отличием, что у него также есть функция
save(), позволяющая сохранить файл на файловой системе.Обратите внимание, что
filesбудет содержать данные только если метод запроса был POST, PUT или PATCH и<form>содержалenctype="multipart/form-data". В противном случае он будет пустым.См. документацию
MultiDict/FileStorageдля получения дополнительных сведений о структуре данных.
-
property form: werkzeug.datastructures.ImmutableMultiDict[str, str] -
Параметры формы. По умолчанию эта функция возвращает
ImmutableMultiDict. Это можно изменить, установивparameter_storage_classна другой тип. Это может быть необходимо, если порядок данных формы имеет значение.Обратите внимание, что загрузка файлов не попадет сюда, а вместо этого в атрибут
files.Изменения
Изменено в версии 0.9: До версии Werkzeug 0.9 это содержало данные формы только для запросов POST и PUT.
-
form_data_parser_class -
псевдоним
werkzeug.formparser.FormDataParser
-
classmethod from_values(*args, **kwargs) -
Создание нового объекта запроса на основе предоставленных значений. Если задан environ, пропущенные значения заполняются из него. Этот метод полезен для небольших скриптов, когда вам нужно смоделировать запрос с URL. Не используйте этот метод для тестирования модулей, есть полноценный объект клиента (
Client), который позволяет создавать multipart-запросы, поддерживать куки и т. д.Принимает те же параметры, что и
EnvironBuilder.Изменения
Изменено в версии 0.5: Этот метод теперь принимает те же аргументы, что и
EnvironBuilder. Из-за этого параметрenvironтеперь называетсяenviron_overrides.- Возвращает
-
объект запроса
- Параметры
- Тип возвращаемого значения
-
property full_path: str -
Запрошенный путь, включая строку запроса.
-
get_data(cache=True, as_text=False, parse_form_data=False) -
Считывает буферизованные входящие данные от клиента в один объект типа bytes. По умолчанию данные кэшируются, но это поведение можно изменить, установив
cacheвFalse.Обычно не рекомендуется вызывать этот метод без предварительной проверки длины содержимого, так как клиент может отправлять десятки мегабайт или более, что может привести к проблемам с памятью на сервере.
Обратите внимание, что если данные формы уже были обработаны, этот метод не вернет ничего, так как обработка данных формы не кэширует данные, как этот метод. Чтобы неявно вызвать функцию обработки данных формы, установите
parse_form_dataвTrue. В этом случае значением по умолчанию возвращаемого значения этого метода будет пустая строка, если парсер формы обрабатывает данные. Как правило, это не требуется, так как, если все данные кэшированы (что является значением по умолчанию), парсер форм будет использовать кэшированные данные для обработки данных формы. Пожалуйста, в любом случае всегда проверяйте длину содержимого перед вызовом этого метода, чтобы избежать исчерпания памяти сервера.Если
as_textустановлено вTrue, возвращаемое значение будет декодированной строкой.Изменения
Добавлено в версии 0.9.
-
get_json(force=False, silent=False, cache=True) -
Парсинг
dataкак JSON.Если тип MIME не указывает JSON (application/json, см.
is_json), или парсинг завершается ошибкой, вызываетсяon_json_loading_failed(), и его возвращаемое значение используется как возвращаемое значение. По умолчанию генерируется ошибка 400 Bad Request.- Параметры
- Тип возвращаемого значения
Изменения
Изменено в версии 2.1: Генерировать ошибку 400, если тип содержимого неверен.
-
headers -
Заголовки, полученные с запросом.
-
property host: str -
Имя хоста, к которому был отправлен запрос, включая порт, если он нестандартный. Проверка с помощью
trusted_hosts.
-
property host_url: str -
Схема и хост URL-адреса запроса.
-
-
property if_match: werkzeug.datastructures.ETags -
Объект, содержащий все значения etag в заголовке
If-Match.- Тип возвращаемого значения
-
property if_modified_since: Optional[datetime.datetime] -
Разбор заголовка
If-Modified-Sinceв виде объекта datetime.Изменения
Изменено в версии 2.0: Объект datetime учитывает часовой пояс.
-
property if_none_match: werkzeug.datastructures.ETags -
Объект, содержащий все значения etag в заголовке
If-None-Match.- Тип возвращаемого значения
-
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()с аргументами по умолчанию.Если тип контента запроса не
application/json, это вызовет ошибку 400 Bad Request.Изменения
Изменено в версии 2.1: Вызывает ошибку 400, если тип контента некорректен.
-
list_storage_class -
Псевдоним для
werkzeug.datastructures.ImmutableList
-
make_form_data_parser() -
Создаёт парсер данных формы. Создаёт экземпляр
form_data_parser_classс некоторыми параметрами.Изменения
Добавлена в версии 0.8.
- Тип возвращаемого значения
-
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] -
Параметры MIME-типа в виде словаря. Например, если тип контента
text/html; charset=utf-8, то параметры будут{'charset': 'utf-8'}.
-
on_json_loading_failed(e) -
Вызывается, если
get_json()терпит неудачу и не подавляется.Если этот метод возвращает значение, оно используется в качестве значения возврата для
get_json(). По умолчанию реализация вызываетBadRequest.- Параметры
-
e (Optional[ValueError]) – Если произошла ошибка при разборе, это исключение. Оно будет
None, если тип контента не былapplication/json. - Тип возвращаемого значения
-
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.
- Тип возвращаемого значения
-
-
referrer -
Поле заголовка запроса Referer позволяет клиенту указать для блага сервера адрес (URI) ресурса, из которого был получен запрос Request-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: IO[bytes] -
Если данные формы входящего запроса не были закодированы с известным типом MIME, данные хранятся в этом потоке без изменений для последующего использования. В большинстве случаев лучше использовать
data, которое предоставит данные в виде строки. Поток возвращает данные только один раз.В отличие от
input_stream, этот поток должным образом защищен от случайного чтения сверх длины ввода. Werkzeug внутренне всегда обращается к этому потоку для чтения данных, что позволяет обернуть этот объект потоком, который выполняет фильтрацию.Изменения
Изменено в версии 0.9: Этот поток теперь всегда доступен, но может быть использован парсером формы позже. Раньше поток устанавливался только в случае отсутствия обработки.
-
property url: str -
Полный URL-адрес запроса со схемой, хостом, корневым путем, путем и строкой запроса.
-
property url_charset: str -
Кодировка символов, предполагаемая для URL-адресов. По умолчанию принимает значение
charset.Изменения
Добавлено в версии 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(атрибут исключения WerkzeugMethodNotAllowed), поскольку запрос никогда не был связан внутри.Изменения
Добавлено в версии 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.user_agent.UserAgent
-
property values: werkzeug.datastructures.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если метод запроса содержит контент. По умолчанию это true, если отправленContent-Type.Изменения
Добавлено в версии 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.- Параметры
- Тип возвращаемого значения
-
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 может быть недоступен в некоторых средах.
-
age -
Поле заголовка ответа Age указывает оценку отправителя времени с момента генерации ответа (или его перевалидации) на сервере источника.
Значения Age — это неотрицательные десятичные целые числа, представляющие время в секундах.
-
property allow: werkzeug.datastructures.HeaderSet -
Поле Allow заголовка сущности перечисляет набор методов, поддерживаемых ресурсом, идентифицируемым URI запроса. Цель этого поля — строго информировать получателя о допустимых методах, связанных с ресурсом. Заголовок Allow ОБЯЗАТЕЛЬНО должен быть присутствовать в ответе 405 (Метод не разрешен).
-
property cache_control: werkzeug.datastructures.ResponseCacheControl -
Общий заголовок Cache-Control используется для указания директив, которые ОБЯЗАТЕЛЬНО должны выполняться всеми механизмами кэширования вдоль цепочки запрос/ответ.
-
calculate_content_length() -
Возвращает длину содержимого, если она доступна, или
Noneв противном случае.
-
call_on_close(func) -
Добавляет функцию в внутренний список функций, которые должны вызываться в процессе закрытия ответа. Начиная с версии 0.7, эта функция также возвращает переданную функцию, что позволяет использовать ее как декоратор.
Журнал изменений
Новое в версии 0.6.
-
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.
-
property content_security_policy: werkzeug.datastructures.ContentSecurityPolicy -
Заголовок
Content-Security-Policyв качестве объектаContentSecurityPolicy. Доступен даже если заголовок не задан.Заголовок Content-Security-Policy добавляет дополнительный уровень безопасности для обнаружения и смягчения определенных типов атак.
-
property content_security_policy_report_only: werkzeug.datastructures.ContentSecurityPolicy -
Заголовок
Content-Security-policy-report-onlyв качестве объектаContentSecurityPolicy. Доступен даже если заголовок не задан.Заголовок 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.
Changelog
Изменено в версии 2.0: Объект datetime имеет часовой пояс.
-
delete_cookie(key, path='/', domain=None, secure=False, httponly=False, samesite=None) -
Удаляет cookie. Беззвучно терпит неудачу, если ключ не существует.
- Параметры
-
- key (str) – ключ (имя) cookie для удаления.
- path (str) – если cookie, который нужно удалить, был ограничен путем, путь должен быть определен здесь.
- domain (Optional[str]) – если cookie, который нужно удалить, был ограничен доменом, этот домен должен быть определен здесь.
-
secure (bool) – Если
True, cookie будет доступен только по HTTPS. - httponly (bool) – Запрещает доступ JavaScript к cookie.
- samesite (Optional[str]) – Ограничивает область действия cookie, чтобы он присоединялся только к запросам, которые являются «односайтовыми».
- Тип возвращаемого значения
-
None
-
direct_passthrough -
Передает тело ответа напрямую как WSGI-итератор. Это может быть полезно, когда тело — это двоичный файл или другой итератор байтов, чтобы пропустить некоторые ненужные проверки. Используйте
send_file()вместо ручного задания.
-
expires -
Поле заголовка сущности Expires задаёт дату/время, после которого ответ считается устаревшим. Устаревший кешированный элемент обычно не возвращается кешем.
Changelog
Изменено в версии 2.0: Объект datetime имеет часовой пояс.
-
classmethod force_type(response, environ=None) -
Принудительно делает WSGI-ответ объектом ответа текущего типа. Werkzeug будет использовать
Responseво многих ситуациях, таких как исключения. Если вызватьget_response()на исключении, вы получите обычный объектResponse, даже если вы используете подкласс.Этот метод может принудительно задать определённый тип ответа, и он также преобразует произвольные вызываемые WSGI-объекты в объекты ответа, если предоставлена среда:
# 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)
Это особенно полезно, если вы хотите послеобработать ответы в основном диспетчере и использовать функциональные возможности, предоставляемые вашим подклассом.
Помните, что это может изменить объекты ответа на месте, если это возможно!
-
freeze() -
Подготавливает объект ответа для сериализации. Выполняет следующие действия:
- Буферизует тело ответа в список, игнорируя
implicity_sequence_conversionиdirect_passthrough. - Устанавливает заголовок
Content-Length. - Генерирует заголовок
ETagесли он ещё не задан.
Changelog
Изменено в версии 2.1: Удалён параметр
no_etag.Изменено в версии 2.0: Добавлен заголовок
ETag, параметрno_etagустарел и будет удалён в Werkzeug 2.1.Изменено в версии 0.6: Заголовок
Content-Lengthустанавливается.- Тип возвращаемого значения
-
None
- Буферизует тело ответа в список, игнорируя
-
-
classmethod from_app(app, environ, buffered=False) -
Создать новый объект ответа из вывода приложения. Это лучше всего работает, если вы передаёте приложение, которое постоянно возвращает генератор. Иногда приложения могут использовать вызываемый
write()возвращаемый функциейstart_response. Это пытается автоматически разрешить такие граничные случаи. Но если вы не получите ожидаемый вывод, вы должны установитьbufferedвTrue, что гарантирует буферизацию.
-
get_app_iter(environ) -
Возвращает итератор приложения для заданной среды. В зависимости от метода запроса и текущего кода состояния возвращаемое значение может быть пустым ответом, а не тем, что содержится в ответе.
Если метод запроса равен
HEADили код состояния находится в диапазоне, где спецификация HTTP требует пустого ответа, возвращается пустая итерируемая последовательность.Журнал изменений
Введено в версии 0.6.
-
get_data(as_text=False) -
Строковое представление тела ответа. При каждом вызове этого свойства итерируемый объект ответа кодируется и выравнивается. Это может привести к нежелательному поведению при передаче больших данных.
Это поведение можно отключить, установив
implicit_sequence_conversionвFalse.Если
as_textустановлено вTrue, возвращаемое значение будет декодированной строкой.Журнал изменений
Введено в версии 0.9.
-
get_etag() -
Возвращает кортеж в форме
(etag, is_weak). Если ETag отсутствует, возвращаемое значение равно(None, None).
-
get_json(force=False, silent=False) -
Распарсить
dataкак JSON. Полезно при тестировании.Если MIME-тип не указывает JSON (application/json, см.
is_json), возвращаетсяNone.В отличие от
Request.get_json(), результат не кэшируется.
-
get_wsgi_headers(environ) -
Это вызывается автоматически непосредственно перед началом ответа и возвращает заголовки, изменённые для заданной среды. Он возвращает копию заголовков из ответа с некоторыми внесёнными изменениями, если необходимо.
Например, заголовок расположения (если он есть) объединяется с корневым URL среды. Кроме того, длина содержимого автоматически устанавливается в ноль для определённых кодов состояния.
Журнал изменений
Изменено в версии 0.6: Ранее эта функция называлась
fix_headersи изменяла объект ответа на месте. Также начиная с 0.6, IRIs в заголовках location и content-location обрабатываются должным образом.Также начиная с версии 0.6, Werkzeug попытается установить длину содержимого, если сможет её определить самостоятельно. Это происходит, если все строки в итерируемом объекте ответа уже закодированы, а итерируемый объект буферизован.
- Параметры
-
environ (WSGIEnvironment) – WSGI-среда запроса.
- Возвращает
-
возвращает новый объект
Headers. - Тип возвращаемого значения
-
get_wsgi_response(environ) -
Возвращает окончательный WSGI-ответ в виде кортежа. Первый элемент кортежа — итерируемый объект приложения, второй — код состояния, а третий — список заголовков. Возвращаемый ответ создаётся специально для заданной среды. Например, если метод запроса в WSGI-среде равен
'HEAD', ответ будет пустым, и будут присутствовать только заголовки и код состояния.Журнал изменений
Введено в версии 0.6.
-
property is_json: bool -
Проверить, указывает ли MIME-тип на данные JSON, либо application/json, либо application/*+json.
-
property is_sequence: bool -
Если итерируемый объект буферизован, это свойство будет
True. Объект ответа будет считать итерируемый объект буферизованным, если атрибут response является списком или кортежем.Журнал изменений
Введено в версии 0.6.
-
-
property is_streamed: bool -
Если ответ передаётся потоком (ответ не является итерируемым объектом с информацией о длине), это свойство равно
True. В данном случае «потоковый» означает, что нет информации о количестве итераций. Это обычноTrueесли в объект ответа передаётся генератор.Это полезно для проверки перед применением некоторого пост-фильтра, который не должен применяться к потоковым ответам.
-
iter_encoded() -
Итерация по закодированному ответу с использованием кодировки ответа. Если объект ответа вызывается как WSGI-приложение, возвращаемое значение этого метода используется в качестве итератора приложения, если не был активирован
direct_passthrough.
-
property json: Optional[Any] -
Разбор данных JSON, если
mimetypeуказывает на JSON (application/json, см.is_json).Вызов
get_json()со значениями по умолчанию.
-
last_modified -
Поле заголовка сущности Last-Modified указывает дату и время, когда исходный сервер полагает, что вариант был в последний раз изменён.
Changelog
Изменено в версии 2.0: Объект datetime учитывает часовой пояс.
-
location -
Поле заголовка ответа Location используется для перенаправления получателя в местоположение, отличное от Request-URI, для завершения запроса или определения нового ресурса.
-
make_conditional(request_or_environ, accept_ranges=False, complete_length=None) -
Делает ответ условным относительно запроса. Этот метод лучше всего работает, если для ответа уже определён etag. Метод
add_etagможно использовать для этого. Если вызван без etag, устанавливается только заголовок даты.Не делает ничего, если метод запроса в запросе или окружении — не GET или HEAD.
Для оптимальной производительности при обработке запросов с диапазонами рекомендуется, чтобы объект данных ответа реализовывал методы
seekable,seekиtell, как описано вio.IOBase. Объекты, возвращаемые методомwrap_file(), автоматически реализуют эти методы.Не удаляет тело ответа, поскольку функция
__call__()автоматически делает это за нас.Возвращает self, чтобы вы могли выполнить
return resp.make_conditional(req), но изменяет объект на месте.- Параметры
-
- request_or_environ (Объединение[WSGIEnvironment, Запрос]) – объект запроса или WSGI-среда, используемая для условного применения к ответу.
-
accept_ranges (Объединение[булево, строка]) – Этот параметр определяет значение заголовка
Accept-Ranges. ЕслиFalse, заголовок не устанавливается. ЕслиTrue, он будет установлен на"bytes". ЕслиNone, он будет установлен на"none". Если строка, будет использовано это значение. -
complete_length (Необязательный[целое число]) – Будет использоваться только в допустимых запросах с диапазоном. Он установит значение полной длины
Content-Rangeи вычислит фактическое значениеContent-Length. Этот параметр обязателен для успешного завершения запросов с диапазонами.
- Исключения
-
RequestedRangeNotSatisfiable, если заголовокRangeне удалось разобрать или удовлетворить. - Тип возвращаемого значения
Changelog
Изменено в версии 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.
-
response: t.Union[t.Iterable[str], t.Iterable[bytes]] -
Тело ответа для отправки как WSGI-итерируемый объект. Список строк или байтов представляет фиксированный ответ, любой другой итерируемый объект — потоковый ответ. Строки кодируются в байты как UTF-8.
Не устанавливайте просто строку или байты, это приведёт к очень неэффективному отправлению ответа, так как он будет итерировать по одному байту за раз.
-
property retry_after: Optional[datetime.datetime] -
Поле заголовка ответа Retry-After может использоваться с ответом 503 (Сервис недоступен) для указания того, сколько времени ожидается, что служба будет недоступна для клиента, который запросил.
Время в секундах до истечения срока действия или дата.
Changelog
Изменено в версии 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) – Запрещает доступ к cookie из JavaScript.
- samesite (Optional[str]) – Ограничивает область действия cookie только запросами с тем же сайтом.
- Тип возвращаемого значения
-
None
-
Сессии
Если вы установили Flask.secret_key (или настроили его из SECRET_KEY), вы можете использовать сессии в приложениях Flask. Сессия позволяет запоминать информацию от одного запроса к другому. Flask делает это, используя подписанный cookie. Пользователь может просматривать содержимое сессии, но не может его изменить, не зная секретный ключ, поэтому убедитесь, что вы установили его в сложном и непредсказуемом виде.
Для доступа к текущей сессии вы можете использовать объект session:
-
class flask.session -
Объект сессии работает практически так же, как обычный словарь, с той разницей, что он отслеживает изменения.
Это прокси. См. Примечания по прокси для получения дополнительной информации.
Следующие атрибуты представляют интерес:
-
new -
Trueесли сессия новая,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()возвращаетNoneFlask вызовет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обновляется, чтобы избежать повторного выполнения логики.
-
get_cookie_httponly(app) -
Возвращает True, если куки сессии должна быть httponly. В данный момент просто возвращает значение конфигурационной переменной
SESSION_COOKIE_HTTPONLY.
-
get_cookie_name(app) -
Имя куки сессии. Использует ``app.config[“SESSION_COOKIE_NAME”]``.
-
get_cookie_path(app) -
Возвращает путь, для которого куки должна быть валидной. Стандартная реализация использует значение из конфигурационной переменной
SESSION_COOKIE_PATHесли она установлена, в противном случае используетAPPLICATION_ROOTили/еслиNone.
-
get_cookie_samesite(app) -
Возвращает
'Strict'или'Lax'если куки должна использовать атрибутSameSite. В данный момент просто возвращает значение настройкиSESSION_COOKIE_SAMESITE.
-
get_cookie_secure(app) -
Возвращает True, если куки должна быть secure. В данный момент просто возвращает значение настройки
SESSION_COOKIE_SECURE.
-
get_expiration_time(app, session) -
Вспомогательный метод, возвращающий дату истечения срока действия сессии или
Noneесли сессия связана с сессией браузера. Стандартная реализация возвращает текущую дату и время + срок действия постоянной сессии, настроенной в приложении.- Параметры
-
- app (Flask) –
- session (flask.sessions.SessionMixin) –
- Тип возвращаемого значения
-
is_null_session(obj) -
Проверяет, является ли данный объект пустой сессией. Пустые сессии не запрашиваются для сохранения.
По умолчанию проверяет, является ли объект экземпляром
null_session_class.
-
make_null_session(app) -
Создаёт пустую сессию, которая используется в качестве замены, если реальная поддержка сессий не может быть загружена из-за ошибки конфигурации. Это в основном помогает пользователю, потому что задача пустой сессии заключается в том, чтобы всё ещё поддерживать поиск без жалоб, но изменения сопровождаются полезным сообщением об ошибке, объясняющим, что не удалось.
По умолчанию создает экземпляр
null_session_class.- Параметры
-
app (Flask) –
- Тип возвращаемого значения
-
null_session_class -
make_null_session()обращается сюда, чтобы получить класс, который должен быть создан, когда запрашивается пустая сессия. Аналогично, методis_null_session()выполняет проверку типа по отношению к этому типу.Псевдоним для
flask.sessions.NullSession
-
-
open_session(app, request) -
Это вызывается в начале каждого запроса после добавления контекста запроса, перед сопоставлением URL.
Это должно вернуть объект, реализующий интерфейс словаря, а также интерфейс
SessionMixin.Это вернёт
Noneдля указания того, что загрузка не удалась по какой-то причине, которая не является непосредственной ошибкой. В этом случае контекст запроса вернётся к использованиюmake_null_session().- Параметры
- Тип возвращаемого значения
-
pickle_based = False -
Флаг, указывающий, использует ли интерфейс сессии механизм сериализации pickle. Это может быть использовано расширениями Flask для принятия решений о том, как обращаться с объектом сессии.
Изменения
Введено в версии 0.10.
-
save_session(app, session, response) -
Вызывается в конце каждого запроса после генерации ответа, перед удалением контекста запроса. Пропускается, если
is_null_session()возвращаетTrue.- Параметры
-
- 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) –
- Тип возвращаемого значения
-
-
class flask.sessions.SecureCookieSessionInterface -
Стандартный интерфейс сессий, хранящий сессии в подписанных куках через модуль
itsdangerous.-
static digest_method(string=b'', *, usedforsecurity=True) -
функция хеширования, используемая для подписи. По умолчанию используется sha1
-
key_derivation = 'hmac' -
название поддерживаемого itsdangerous алгоритма вывода ключа. По умолчанию используется hmac.
-
open_session(app, request) -
Это вызывается в начале каждого запроса после добавления контекста запроса, перед сопоставлением URL.
Это должно вернуть объект, реализующий интерфейс словаря, а также интерфейс
SessionMixin.Это вернёт
Noneдля указания того, что загрузка не удалась по какой-то причине, которая не является непосредственной ошибкой. В этом случае контекст запроса вернётся к использованиюmake_null_session().- Параметры
- Тип возвращаемого значения
-
salt = 'cookie-session' -
соль, которая должна быть применена поверх секретного ключа для подписи сессий, основанных на куках.
-
save_session(app, session, response) -
Вызывается в конце каждого запроса после генерации ответа, перед удалением контекста запроса. Пропускается, если
is_null_session()возвращаетTrue.- Параметры
-
- app (Flask) –
- session (flask.sessions.SessionMixin) –
- response (Response) –
- Тип возвращаемого значения
-
None
-
serializer = <flask.json.tag.TaggedJSONSerializer object> -
Питоновский сериализатор для полезной нагрузки. По умолчанию используется компактный сериализатор JSON, поддерживающий некоторые дополнительные типы Python, такие как объекты datetime или кортежи.
-
session_class -
псевдоним
flask.sessions.SecureCookieSession
-
-
class flask.sessions.SecureCookieSession(initial=None) -
Базовый класс для сессий, основанных на подписанных cookie.
Этот бэкэнд сессий установит атрибуты
modifiedиaccessed. Он не может надёжно отслеживать, является ли сессия новой (в отличие от пустой), поэтомуnewостаётся жёстко закодированным вFalse.- Параметры
-
initial (Any) –
- Тип возвращаемого значения
-
None
-
accessed = False -
заголовок, который позволяет прокси-серверам кеширования кешировать разные страницы для разных пользователей.
-
get(key, default=None) -
Возвращает значение для ключа, если ключ есть в словаре, иначе — значение по умолчанию.
-
modified = False -
При изменении данных устанавливается в
True. Отслеживается только сам словарь сессии; если сессия содержит изменяемые данные (например, вложенный словарь), то это значение должно быть установлено вTrueвручную при изменении этих данных. Файл cookie сессии будет записан в ответ только в том случае, если это значениеTrue.
-
class flask.sessions.NullSession(initial=None) -
Класс используется для генерации более информативных сообщений об ошибках, если сессии недоступны. По-прежнему допускает чтение пустой сессии, но отказывает при записи.
- Параметры
-
initial (Any) –
- Тип возвращаемого значения
-
None
-
class flask.sessions.SessionMixin -
Расширяет базовый словарь атрибутами сессии.
-
accessed = True -
Некоторые реализации могут определять, когда данные сессии читаются или записываются, и устанавливать это значение при этом. Значение по умолчанию миксина жёстко закодировано как
True.
-
modified = True -
Некоторые реализации могут определять изменения в сессии и устанавливать это значение при этом. Значение по умолчанию миксина жёстко закодировано как
True.
-
property permanent: bool -
Это отражает ключ
'_permanent'в словаре.
-
Замечание
Конфигурация PERMANENT_SESSION_LIFETIME может быть целым числом или timedelta. Атрибут permanent_session_lifetime всегда является timedelta.
Тестовый клиент
-
class flask.testing.FlaskClient(*args, **kwargs) -
Работает как обычный тестовый клиент Werkzeug, но имеет информацию о контекстах Flask, чтобы отложить очистку контекста запроса до конца блока
with. Для общей информации о том, как использовать этот класс, обратитесь кwerkzeug.test.Client.Журнал изменений
Изменено в версии 0.12:
app.test_client()включает предопределённую по умолчанию среду, которую можно установить после создания объектаapp.test_client()вclient.environ_base.Основное использование описано в главе Тестирование приложений Flask.
-
open(*args, buffered=False, follow_redirects=False, **kwargs) -
Создаёт словарь environ из заданных аргументов, выполняет запрос к приложению с использованием этого словаря и возвращает ответ.
- Параметры
-
-
args (Any) – Передаётся в
EnvironBuilderдля создания environ для запроса. Если передан единственный аргумент, это может быть существующийEnvironBuilderили словарь environ. -
buffered (bool) – Преобразует итератор, возвращаемый приложением, в список. Если у итератора есть метод
close(), он вызывается автоматически. -
follow_redirects (bool) – Выполняет дополнительные запросы для следования HTTP-редиректам до тех пор, пока не будет возвращён статус, не являющийся редиректом.
TestResponse.historyотображает промежуточные ответы. - kwargs (Any) –
-
args (Any) – Передаётся в
- Тип возвращаемого значения
-
TestResponse
Журнал изменений
Изменено в версии 2.1: Удалён параметр
as_tuple.Изменено в версии 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(), которые передаются непосредственно.- Параметры
- Тип возвращаемого значения
-
Generator[flask.sessions.SessionMixin, None, None]
-
Запуск тестов с помощью CLI
-
class flask.testing.FlaskCliRunner(app, **kwargs) -
A
CliRunnerдля тестирования команд CLI приложения Flask. Обычно создаётся с помощьюtest_cli_runner(). Смотрите Запуск команд с помощью CLI Runner.-
invoke(cli=None, args=None, **kwargs) -
Вызывает команду CLI в изолированной среде. Смотрите
CliRunner.invokeдля полной документации метода. Смотрите Запуск команд с помощью CLI Runner для примеров.Если аргумент
objне указан, передаётся экземплярScriptInfo, который знает, как загрузить приложение Flask, которое тестируется.
-
Глобальные переменные приложения
Для обмена данными, действительными только для одного запроса, от одной функции к другой, глобальная переменная недостаточно хороша, потому что она вызовет ошибки в многопоточных средах. Flask предоставляет специальный объект, гарантирующий его действительность только для активного запроса и возвращающий разные значения для каждого запроса. Короче говоря: он делает всё правильно, как это делается для request и session.
-
flask.g -
Объект пространства имен, который может хранить данные во время контекста контекста приложения. Это экземпляр
Flask.app_ctx_globals_class, по умолчаниюctx._AppCtxGlobals.Это хорошее место для хранения ресурсов во время запроса. Например, функция
before_requestмогла бы загрузить объект пользователя по идентификатору сессии, затем установитьg.userдля использования в функции представления.Это прокси. Подробнее см. Примечания по прокси.
Изменения
Изменено в версии 0.10: Связан с контекстом приложения, а не с контекстом запроса.
-
class flask.ctx._AppCtxGlobals -
Простой объект. Используется как пространство имен для хранения данных во время контекста приложения.
Создание контекста приложения автоматически создает этот объект, который доступен как прокси
g.- 'key' in g
-
Проверка наличия атрибута.
Изменения
Введено в версии 0.10.
- iter(g)
-
Возвращает итератор по именам атрибутов.
Изменения
Введено в версии 0.10.
-
get(name, default=None) -
Получение атрибута по имени или значение по умолчанию. Подобно
dict.get().- Параметры
- Тип возвращаемого значения
Изменения
Введено в версии 0.10.
-
pop(name, default=<object object>) -
Получение и удаление атрибута по имени. Подобно
dict.pop().- Параметры
- Тип возвращаемого значения
Изменения
Введено в версии 0.11.
-
setdefault(name, default=None) -
Получение значения атрибута, если он есть, иначе установка и возврат значения по умолчанию. Подобно
dict.setdefault().- Параметры
- Тип возвращаемого значения
Изменения
Введено в версии 0.11.
Полезные функции и классы
-
flask.current_app -
Провайдер приложения, обрабатывающего текущий запрос. Полезно для доступа к приложению без необходимости импорта, или если его нельзя импортировать, например, при использовании паттерна фабрики приложения или в блюпринтах и расширениях.
Доступен только при наличии контекста приложения. Это происходит автоматически во время запросов и команд из командной строки. Его можно вручную управлять с помощью
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.
- Тип возвращаемого значения
-
flask.copy_current_request_context(f) -
Вспомогательная функция, которая декорирует функцию для сохранения текущего контекста запроса. Это полезно при работе с greenlet. В момент декорирования функции создаётся копия контекста запроса, а затем она подталкивается при вызове функции. В копию контекста запроса также включается текущая сессия.
Пример:
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.
-
flask.has_app_context() -
Работает как
has_request_context(), но для контекста приложения. Вы также можете просто проверить истинность объектаcurrent_app.Изменения
Новая в версии 0.9.
- Тип возвращаемого значения
-
flask.url_for(endpoint, *, _anchor=None, _method=None, _scheme=None, _external=None, **values) -
Генерирует URL для указанного конечной точки с заданными значениями.
Требуется активный запрос или контекст приложения, и вызывает
current_app.url_for(). Полная документация находится в этом методе.- Параметры
-
-
endpoint (str) – Имя конечной точки, связанной с генерируемым URL. Если это начинается с
., будет использоваться имя текущего бьюпринта (если таковое имеется). -
_anchor (Optional[str]) – Если указано, добавить это как
#anchorк URL. - _method (Optional[str]) – Если указано, сгенерировать URL, связанный с этим методом для конечной точки.
- _scheme (Optional[str]) – Если указано, URL будет иметь этот схему, если это внешний URL.
- _external (Optional[bool]) – Если указано, предпочесть внутренний URL (False) или потребовать внешний URL (True). Внешние URL включают схему и домен. Когда нет активного запроса, URL по умолчанию являются внешними.
-
values (Any) – Значения для использования в переменных частях правила URL. Неизвестные ключи добавляются в качестве аргументов строки запроса, как
?a=b&c=d.
-
endpoint (str) – Имя конечной точки, связанной с генерируемым URL. Если это начинается с
- Тип возвращаемого значения
Изменено в версии 2.2: Вызывает
current_app.url_for, позволяя приложению переопределить поведение.Изменения
Изменено в версии 0.10: Добавлен параметр
_scheme.Изменено в версии 0.9: Добавлены параметры
_anchorи_method.Изменено в версии 0.9: Вызывает
app.handle_url_build_errorпри ошибках построения.
-
flask.abort(code, *args, **kwargs) -
Вызывает
HTTPExceptionдля указанного кода состояния.Если
current_appдоступен, он вызовет свой объектaborter, в противном случае он будет использоватьwerkzeug.exceptions.abort().- Параметры
- Тип возвращаемого значения
-
те.NoReturn
Новая в версии 2.2: Вызывает
current_app.aborterесли доступен, вместо использования по умолчанию Werkzeugabort.
-
flask.redirect(location, code=302, Response=None) -
Создать объект ответа перенаправления.
Если доступен
current_app, он будет использовать его методredirect(), в противном случае будет использоватьсяwerkzeug.utils.redirect().- Параметры
- Тип возвращаемого значения
-
BaseResponse
Добавлена в версии 2.2: Вызывает
current_app.redirect, если доступно, вместо всегда использования по умолчанию Werkzeugredirect.
-
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.
-
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 (Union[Callable[[flask.typing.ResponseClass], flask.typing.ResponseClass], Callable[[flask.typing.ResponseClass], Awaitable[flask.typing.ResponseClass]]]) –
- Тип возвращаемого значения
-
Union[Callable[[flask.typing.ResponseClass], flask.typing.ResponseClass], Callable[[flask.typing.ResponseClass], Awaitable[flask.typing.ResponseClass]]]
-
flask.send_file(path_or_file, mimetype=None, as_attachment=False, download_name=None, conditional=True, etag=True, last_modified=None, max_age=None) -
Отправьте содержимое файла клиенту.
Первый аргумент может быть путем к файлу или файлоподобным объектом. Пути предпочтительны в большинстве случаев, поскольку Werkzeug может управлять файлом и получать дополнительную информацию из пути. Передача файлоподобного объекта требует, чтобы файл был открыт в двоичном режиме, и она в основном полезна при создании файла в памяти с помощью
io.BytesIO.Никогда не передавайте пути к файлам, предоставленные пользователем. Предполагается, что путь является надёжным, поэтому пользователь может создать путь для доступа к файлу, которого вы не предполагали. Используйте
send_from_directory(), чтобы безопасно обслуживать запрошенные пользователем пути из каталога.Если сервер WSGI задаёт
file_wrapperвenviron, он используется; в противном случае используется встроенный обертка Werkzeug. В качестве альтернативы, если HTTP-сервер поддерживаетX-Sendfile, настройка Flask сUSE_X_SENDFILE = Trueсообщит серверу отправить указанный путь, что гораздо эффективнее, чем чтение его в Python.- Параметры
-
- path_or_file (Union[os.PathLike, str, BinaryIO]) – Путь к отправляемому файлу, относительно текущей рабочей директории, если указан относительный путь. В качестве альтернативы, файлоподобный объект, открытый в двоичном режиме. Убедитесь, что указатель файла установлен в начало данных.
- mimetype (Optional[str]) – MIME-тип для отправки файла. Если не указан, он будет пытаться определить его по имени файла.
- as_attachment (bool) – Указывает браузеру предложить сохранить файл вместо отображения.
- download_name (Optional[str]) – Имя файла по умолчанию, которое браузеры будут использовать при сохранении. По умолчанию совпадает с именем переданного файла.
-
conditional (bool) – Включить условные и диапазонные ответы на основе заголовков запроса. Требует передачи пути к файлу и
environ. - etag (Union[bool, str]) – Вычислить ETag для файла, что требует передачи пути к файлу. Может также быть строкой для использования вместо него.
- last_modified (Optional[Union[datetime.datetime, int, float]]) – Время последнего изменения файла в секундах. Если не указан, будет пытаться определить его по пути к файлу.
-
max_age (Optional[Union[int, Callable[[Optional[str]], Optional[int]]]]) – Сколько времени клиент должен кешировать файл в секундах. Если установлено,
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, **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 (Union[os.PathLike, str]) – Каталог, в котором
pathдолжен находиться, относительно корневого пути текущего приложения. -
path (Union[os.PathLike, str]) – Путь к файлу для отправки, относительно
directory. -
kwargs (Any) – Аргументы для передачи в
send_file().
-
directory (Union[os.PathLike, str]) – Каталог, в котором
- Тип возвращаемого значения
Журнал изменений
Изменено в версии 2.0:
pathзаменяет параметрfilename.Добавлена в версии 2.0: Реализация перенесена в Werkzeug. Теперь это обертка для передачи некоторых специфичных для Flask аргументов.
Добавлена в версии 0.5.
-
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 <em>World</em>!')Это реализует интерфейс
__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 & bar</em>') >>> Markup("<em>Hello</em> ") + "<foo>" Markup('<em>Hello</em> <foo>')-
classmethod escape(s) -
Экранировать строку. Вызывает
escape()и гарантирует, что для подклассов возвращается правильный тип.- Параметры
-
s (Any) –
- Тип возвращаемого значения
-
striptags() -
unescape()разметку, удалить теги и нормализовать пробелы до одиночных пробелов.>>> Markup("Main » <em>About</em>").striptags() 'Main » About'- Тип возвращаемого значения
-
unescape() -
Преобразовать экранированную разметку обратно в строку текста. Это заменяет сущности HTML символами, которые они представляют.
>>> Markup("Main » <em>About</em>").unescape() 'Main » <em>About</em>'- Тип возвращаемого значения
-
Сообщения всплывающие подсказки
-
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параметр добавлен. -
Поддержка JSON
Flask использует встроенный модуль Python json для обработки JSON по умолчанию. Реализация JSON может быть изменена, присвоив другой поставщик flask.Flask.json_provider_class или flask.Flask.json. Функции, предоставляемые flask.json, будут использовать методы app.json, если контекст приложения активен.
Фильтр Jinja |tojson настроен на использование поставщика JSON приложения. Фильтр помечает вывод |safe. Используйте его для рендеринга данных внутри HTML <script> тегов.
<script>
const names = {{ names|tosjon }};
renderChart(names, {{ axis_data|tojson }});
</script>
-
flask.json.jsonify(*args, **kwargs) -
Сериализуйте заданные аргументы в формате JSON и верните объект
Responseсapplication/jsonmimetype. Словарь или список, возвращаемый из представления, будут автоматически преобразованы в ответ JSON без необходимости вызова этой функции.Требуется активный контекст запроса или приложения и вызов
app.json.response().В режиме отладки вывод отформатирован с отступами для лучшей читаемости. Это также может быть контролируемо поставщиком.
Можно использовать либо позиционные, либо именованные аргументы, но не оба одновременно. Если аргументы не указаны, сериализуется
None.- Параметры
-
- args (t.Any) – Единственное значение для сериализации или несколько значений, которые будут обработаны как список для сериализации.
- kwargs (t.Any) – Обработать как словарь для сериализации.
- Тип возвращаемого значения
Изменено в версии 2.2: Вызывает
current_app.json.response, позволяя приложению переопределить поведение.Изменения
Изменено в версии 2.0.2: Поддерживается
decimal.Decimalпутём преобразования в строку.Изменено в версии 0.11: Добавлена поддержка сериализации массивов верхнего уровня. Это было проблемой безопасности в старых браузерах. См. Безопасность JSON.
Добавлена в версии 0.2.
-
flask.json.dumps(obj, *, app=None, **kwargs) -
Сериализует данные в формате JSON.
Если
current_appдоступен, он будет использовать свой методapp.json.dumps(), в противном случае будет использоватьсяjson.dumps().- Параметры
-
- obj (t.Any) – Данные для сериализации.
-
kwargs (t.Any) – Аргументы, передаваемые в реализацию
dumps. - app (Flask | None) –
- Тип возвращаемого значения
Изменено в версии 2.2: Вызывает
current_app.json.dumps, позволяя приложению переопределить поведение.Изменено в версии 2.2: Параметр
appбудет удален в Flask 2.3.Изменения
Изменено в версии 2.0.2: Поддерживается
decimal.Decimalпутём преобразования в строку.Изменено в версии 2.0:
encodingбудет удалено в Flask 2.1.Изменено в версии 1.0.3:
appможет быть передан напрямую, вместо необходимости контекста приложения для конфигурации.
-
flask.json.dump(obj, fp, *, app=None, **kwargs) -
Сериализуйте данные в формате JSON и запишите в файл.
Если
current_appдоступен, он будет использовать свой методapp.json.dump(), в противном случае будет использоватьсяjson.dump().- Параметры
- Тип возвращаемого значения
-
None
Изменено в версии 2.2: Вызывает
current_app.json.dump, позволяя приложению переопределить поведение.Изменено в версии 2.2: Параметр
appбудет удален в Flask 2.3.Изменения
Изменено в версии 2.0: Запись в двоичный файл и аргумент
encodingбудут удалены в Flask 2.1.
-
flask.json.loads(s, *, app=None, **kwargs) -
Десериализует данные из JSON.
Если
current_appдоступен, он будет использовать свой методapp.json.loads(), в противном случае будет использоватьсяjson.loads().- Параметры
- Тип возвращаемого значения
-
t.Any
Изменено в версии 2.2: Вызывает
current_app.json.loads, позволяя приложению переопределить поведение.Изменено в версии 2.2: Параметр
appбудет удален в Flask 2.3.Изменения
Изменено в версии 2.0:
encodingбудет удалено в Flask 2.1. Данные должны быть строкой или байтами UTF-8.Изменено в версии 1.0.3:
appможет быть передан напрямую, вместо необходимости контекста приложения для конфигурации.
-
flask.json.load(fp, *, app=None, **kwargs) -
Десериализация данных в формате JSON, считанных из файла.
Если доступен
current_app, он будет использовать его методapp.json.load(), в противном случае будет использоватьсяjson.load().- Параметры
-
- fp (t.IO[t.AnyStr]) – Файл, открытый для чтения текста или байтов UTF-8.
-
kwargs (t.Any) – Аргументы, передаваемые в реализацию
load. - app (Flask | None) –
- Тип возвращаемого значения
-
t.Any
Изменено в версии 2.2: Вызов
current_app.json.load, позволяющий приложению переопределить поведение.Изменено в версии 2.2: Параметр
appбудет удален в Flask 2.3.Журнал изменений
Изменено в версии 2.0:
encodingбудет удален в Flask 2.1. Файл должен быть открыт в текстовом режиме или в бинарном режиме с байтами UTF-8.
-
class flask.json.provider.JSONProvider(app) -
Стандартный набор операций с JSON для приложения. Подклассы этого класса могут использоваться для настройки поведения JSON или использования разных библиотек JSON.
Чтобы реализовать провайдер для конкретной библиотеки, подклассифицируйте этот базовый класс и реализуйте как минимум
dumps()иloads(). Все остальные методы имеют реализации по умолчанию.Чтобы использовать другой провайдер, либо подклассифицируйте
Flaskи установитеjson_provider_classна класс провайдера, либо установитеapp.jsonна экземпляр класса.- Параметры
-
app (Flask) – Экземпляр приложения. Он будет сохранен в виде
weakref.proxyатрибута_app. - Тип возвращаемого значения
-
None
Новое в версии 2.2.
-
dumps(obj, **kwargs) -
Сериализация данных в формате JSON.
-
dump(obj, fp, **kwargs) -
Сериализация данных в формате JSON и запись в файл.
-
loads(s, **kwargs) -
Десериализация данных из JSON.
-
load(fp, **kwargs) -
Десериализация данных в формате JSON, считанных из файла.
-
response(*args, **kwargs) -
Сериализует заданные аргументы в формате JSON и возвращает объект
Responseс типом контентаapplication/json.Функция
jsonify()вызывает этот метод для текущего приложения.Можно передать позиционные или именованные аргументы, но не оба сразу. Если аргументы не переданы, сериализуется
None.- Параметры
-
- args (t.Any) – Одно значение для сериализации или несколько значений для сериализации в виде списка.
- kwargs (t.Any) – Словарь для сериализации.
- Тип возвращаемого значения
-
class flask.json.provider.DefaultJSONProvider(app) -
Обеспечивает JSON-операции с использованием встроенной в Python библиотекой
json. Сериализует следующие дополнительные типы данных:-
datetime.datetimeиdatetime.dateсериализуются в строки формата RFC 822. Это соответствует формату даты HTTP. -
uuid.UUIDсериализуется в строку. -
dataclasses.dataclassпередаётся вdataclasses.asdict(). -
Markup(или любой объект с методом__html__) вызовет метод__html__для получения строки.
- Parameters
-
app (Flask) –
- Return type
-
None
-
static default(o) -
Применяет эту функцию к любому объекту, для которого
json.dumps()неизвестен способ сериализации. Она должна возвращать допустимый тип JSON или вызывать исключениеTypeError.
-
ensure_ascii = True -
Заменяет символы, не входящие в ASCII, последовательностями экранирования. Это может быть совместимее с некоторыми клиентами, но может быть отключено для повышения производительности и размера.
-
sort_keys = True -
Сортирует ключи в любых сериализуемых словарях. Это может быть полезно в некоторых ситуациях кэширования, но может быть отключено для повышения производительности. При включении ключи должны быть строками; они не преобразуются перед сортировкой.
-
compact: bool | None = None -
Если
True, илиNoneвне режима отладки, выводresponse()не будет добавлять отступы, новые строки или пробелы. ЕслиFalse, илиNoneв режиме отладки, он будет использовать некомпактное представление.
-
mimetype = 'application/json' -
Тип MIME, установленный в
response().
-
dumps(obj, **kwargs) -
Сериализует данные в JSON в строку.
Аргументы ключевых слов передаются в
json.dumps(). Устанавливает некоторые значения параметров по умолчанию из атрибутовdefault,ensure_asciiиsort_keys.- Parameters
-
- obj (Any) – Данные для сериализации.
-
kwargs (Any) – Передаётся в
json.dumps().
- Return type
-
loads(s, **kwargs) -
Десериализует данные в JSON из строки или байтов.
- Parameters
-
- s (str | bytes) – Текст или байты UTF-8.
-
kwargs (Any) – Передаётся в
json.loads().
- Return type
-
response(*args, **kwargs) -
Сериализует указанные аргументы в JSON и возвращает объект
Responseс ним. Тип MIME ответа будет «application/json», и его можно изменить с помощьюmimetype.Если
compactравенFalseили режим отладки включен, вывод будет отформатирован для лучшей читаемости.Можно использовать позиционные или ключевые аргументы, но не оба вместе. Если аргументы не указаны,
Noneбудет сериализован.- Parameters
-
- args (t.Any) – Одно значение для сериализации или несколько значений, которые будут обработаны как список для сериализации.
- kwargs (t.Any) – Будет обработано как словарь для сериализации.
- Return type
-
-
class flask.json.JSONEncoder(**kwargs) -
По умолчанию используется кодировщик JSON. Обрабатывает дополнительные типы по сравнению со встроенным
json.JSONEncoder.-
datetime.datetimeиdatetime.dateсериализуются в строки формата RFC 822. Это соответствует формату даты HTTP. -
decimal.Decimalсериализуется в строку. -
uuid.UUIDсериализуется в строку. -
dataclasses.dataclassпередаётся вdataclasses.asdict(). -
Markup(или любой объект с методом__html__) вызовет метод__html__для получения строки.
Для переопределения значения по умолчанию назначьте подкласс этого класса свойству
flask.Flask.json_encoderилиflask.Blueprint.json_encoder.Устарело начиная с версии 2.2: Будет удалено в Flask 2.3. Используйте
app.jsonвместо него.- Тип возвращаемого значения
-
None
-
default(o) -
Преобразует
oв сериализуемый в JSON тип. См.json.JSONEncoder.default(). Python не поддерживает переопределение способов сериализации основных типов, таких какstrилиlist. Они обрабатываются до вызова этого метода.
-
-
class flask.json.JSONDecoder(**kwargs) -
По умолчанию используется декодер JSON.
Это не изменяет поведение от встроенного
json.JSONDecoder.Для переопределения значения по умолчанию назначьте подкласс этого класса свойству
flask.Flask.json_decoderилиflask.Blueprint.json_decoder.Устарело начиная с версии 2.2: Будет удалено в Flask 2.3. Используйте
app.jsonвместо него.- Тип возвращаемого значения
-
None
Размеченные JSON
Компактное представление для потерь-безопасной сериализации нестандартных типов JSON. SecureCookieSessionInterface использует это для сериализации данных сессии, но это может быть полезно и в других местах. Его можно расширить для поддержки других типов.
-
class flask.json.tag.TaggedJSONSerializer -
Сериализатор, использующий систему тегов для компактного представления объектов, которые не являются типами JSON. Передаётся в качестве промежуточного сериализатора
itsdangerous.Serializer.Поддерживаются следующие дополнительные типы:
- Тип возвращаемого значения
-
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.
-
loads(value) -
Загрузить данные из строки JSON и десериализовать любые помеченные объекты.
-
register(tag_class, force=False, index=None) -
Зарегистрировать новый тег в этом сериализаторе.
- Параметры
-
- класс_тега (Type[flask.json.tag.JSONTag]) – класс тега для регистрации. Будет инстанцирован с экземпляром этого сериализатора.
-
force (bool) – перезаписать существующий тег. Если false (по умолчанию), возникает
KeyError. -
индекс (Optional[int]) – индекс для вставки нового тега в порядке тегов. Полезно, когда новый тег является частным случаем существующего тега. Если
None(по умолчанию), тег добавляется в конец порядка.
- Исключения
-
KeyError – если ключ тега уже зарегистрирован и
forceне равно true. - Тип возвращаемого значения
-
None
-
tag(value) -
Преобразовать значение в помеченное представление, если необходимо.
-
class flask.json.tag.JSONTag(serializer) -
Базовый класс для определения тегов типов для
TaggedJSONSerializer.- Параметры
-
сериализатор (TaggedJSONSerializer) –
- Тип возвращаемого значения
-
None
-
check(value) -
Проверить, нужно ли помечать данное значение этим тегом.
-
key: Optional[str] = None -
Тег для маркировки сериализованного объекта. Если
None, этот тег используется только как промежуточная стадия во время помечания.
-
tag(value) -
Преобразовать значение в допустимый тип JSON и добавить структуру тега вокруг него.
-
to_json(value) -
Преобразовать объект Python в объект, который является допустимым типом JSON. Тег будет добавлен позже.
Посмотрим пример, который добавляет поддержку 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, jinja2.environment.Template, List[Union[str, jinja2.environment.Template]]]) – Имя шаблона для отображения. Если задан список, будет отображено первое существующее имя.
- context (Any) – Переменные, доступные в шаблоне.
- Тип возвращаемого значения
-
flask.render_template_string(source, **context) -
Отображает шаблон из заданной строки исходного кода с заданным контекстом.
-
flask.stream_template(template_name_or_list, **context) -
Отображает шаблон по имени с заданным контекстом как поток. Это возвращает итератор строк, который можно использовать в качестве ответа потоковой передачи из представления.
- Параметры
-
- template_name_or_list (Union[str, jinja2.environment.Template, List[Union[str, jinja2.environment.Template]]]) – Имя шаблона для отображения. Если задан список, будет отображено первое существующее имя.
- context (Any) – Переменные, доступные в шаблоне.
- Тип возвращаемого значения
Добавлена в версии 2.2.
-
flask.stream_template_string(source, **context) -
Отображает шаблон из заданной строки исходного кода с заданным контекстом как поток. Это возвращает итератор строк, который можно использовать в качестве ответа потоковой передачи из представления.
- Параметры
- Тип возвращаемого значения
Добавлена в версии 2.2.
-
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.
Настройка
-
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вместо этого.- Параметры
- Тип возвращаемого значения
-
None
-
from_envvar(variable_name, silent=False) -
Загружает конфигурацию из переменной окружения, указывающей на файл конфигурации. Это в основном просто сокращение с более приятными сообщениями об ошибках для этой строки кода:
app.config.from_pyfile(os.environ['YOURAPPLICATION_SETTINGS'])
-
from_file(filename, load, silent=False) -
Обновляет значения в конфигурации из файла, который загружается с использованием параметра
load. Загруженные данные передаются методуfrom_mapping().import json app.config.from_file("config.json", load=json.load) import toml app.config.from_file("config.toml", load=toml.load)- Параметры
-
- filename (str) – Путь к файлу данных. Это может быть абсолютный путь или относительный к корневому пути конфигурации.
-
load (
Callable[[Reader], Mapping]гдеReaderреализует методread.) – Функция, которая принимает дескриптор файла и возвращает отображение загруженных данных из файла. - silent (bool) – Игнорировать файл, если он не существует.
- Возвращаемое значение
-
Trueесли файл был загружен успешно. - Тип возвращаемого значения
Изменения
Введено в версии 2.0.
-
from_mapping(mapping=None, **kwargs) -
Обновляет конфигурацию как
update(), игнорируя элементы с ключами, не имеющими заглавных букв.- Возвращаемое значение
-
Всегда возвращает
True. - Параметры
- Тип возвращаемого значения
Изменения
Введено в версии 0.11.
-
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().
-
from_prefixed_env(prefix='FLASK', *, loads=<function loads>) -
Загрузить все переменные окружения, начинающиеся с
FLASK_, удалив префикс из ключа env для ключа конфигурации. Значения передаются через функцию загрузки для попытки преобразовать их в типы, более специфичные, чем строки.Ключи загружаются в порядке
sorted().Функция загрузки по умолчанию пытается разобрать значения как любой допустимый тип JSON, включая словари и списки.
Конкретные элементы вложенных словарей можно задать, разделяя ключи двойными подчеркиваниями (
__). Если промежуточный ключ не существует, он будет инициализирован пустым словарем.- Параметры
-
-
prefix (str) – Загрузить переменные окружения, начинающиеся с этого префикса, разделённого символом подчёркивания (
_). -
loads (Callable[[str], Any]) – Передать каждое строковое значение этой функции и использовать возвращённое значение в качестве значения конфигурации. Если возникает любая ошибка, она игнорируется, и значение остаётся строкой. По умолчанию
json.loads().
-
prefix (str) – Загрузить переменные окружения, начинающиеся с этого префикса, разделённого символом подчёркивания (
- Тип возвращаемого значения
Изменения
Новая в версии 2.1.
-
from_pyfile(filename, silent=False) -
Обновляет значения в конфигурации из файла Python. Эта функция ведет себя так, как если бы файл был импортирован как модуль с функцией
from_object().- Параметры
- Возвращает
-
Trueесли файл был успешно загружен. - Тип возвращаемого значения
Изменения
Новая в версии 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' }Это часто полезно, когда параметры конфигурации напрямую отображаются на ключевые аргументы в функциях или конструкторах классов.
- Параметры
- Тип возвращаемого значения
Изменения
Новая в версии 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.
Внутренние полезные компоненты
-
class flask.ctx.RequestContext(app, environ, request=None, session=None) -
Контекст запроса содержит информацию о каждом запросе. Приложение Flask создаёт и помещает его в начало запроса, а затем извлекает в конце. Он создаст адаптер URL и объект запроса для предоставленной среды WSGI.
Не пытайтесь использовать этот класс напрямую, вместо этого используйте
test_request_context()иrequest_context()для создания этого объекта.Когда контекст запроса извлекается, он вычисляет все функции, зарегистрированные в приложении для выполнения действий при завершении запроса (
teardown_request()).Контекст запроса автоматически извлекается в конце запроса. При использовании интерактивного отладчика контекст будет восстановлен, поэтому
requestвсё ещё доступен. Аналогично, клиент тестирования может сохранить контекст после завершения запроса. Однако функции завершения запроса могут уже закрыть некоторые ресурсы, такие как соединения с базой данных.- Параметры
- Тип возвращаемого значения
-
None
-
copy() -
Создаёт копию этого контекста запроса с тем же объектом запроса. Это можно использовать для перемещения контекста запроса в другую зелёную нить. Поскольку фактический объект запроса один и тот же, это нельзя использовать для перемещения контекста запроса в другую нить, если доступ к объекту запроса не заблокирован.
Журнал изменений
Изменено в версии 1.1: Используется текущий объект сессии вместо перезагрузки исходных данных. Это предотвращает
flask.sessionот указания на устаревший объект.Добавлена в версии 0.10.
- Тип возвращаемого значения
-
match_request() -
Может быть переопределён подклассом для подключения к сопоставлению запроса.
- Тип возвращаемого значения
-
None
-
pop(exc=<object object>) -
Извлекает контекст запроса и отвязывает его. Это также вызовет выполнение функций, зарегистрированных декоратором
teardown_request().Журнал изменений
Изменено в версии 0.9: Добавлен параметр
exc.- Параметры
-
exc (Optional[BaseException]) –
- Тип возвращаемого значения
-
None
-
flask.globals.request_ctx -
Текущий
RequestContext. Если контекст запроса не активен, обращение к атрибутам этого прокси вызоветRuntimeError.Это внутренний объект, который имеет важное значение для обработки Flask запросов. Доступ к нему не нужен в большинстве случаев. Скорее всего, вам нужны
requestиsession.
-
class flask.ctx.AppContext(app) -
Контекст приложения содержит информацию, специфичную для приложения. Контекст приложения создаётся и помещается в начало каждого запроса, если он не активен. Контекст приложения также помещается при выполнении команд CLI.
- Параметры
-
app (Flask) –
- Тип возвращаемого значения
-
None
-
pop(exc=<object object>) -
Извлекает контекст приложения.
- Параметры
-
exc (Optional[BaseException]) –
- Тип возвращаемого значения
-
None
-
push() -
Связывает контекст приложения с текущим контекстом.
- Тип возвращаемого значения
-
None
-
flask.globals.app_ctx -
Текущий
AppContext. Если контекст приложения не активен, обращение к атрибутам этого прокси вызоветRuntimeError.Это внутренний объект, который имеет важное значение для обработки Flask запросов. Доступ к нему не нужен в большинстве случаев. Скорее всего, вам нужны
current_appиgвместо этого.
-
class flask.blueprints.BlueprintSetupState(blueprint, app, options, first_registration) -
Временный объект для регистрации модуля с приложением. Экземпляр этого класса создаётся методом
make_setup_state()и далее передаётся всем функциям обратного вызова регистрации.- Параметры
- Тип возвращаемого значения
-
None
-
add_url_rule(rule, endpoint=None, view_func=None, **options) -
Вспомогательный метод для регистрации правила (и необязательно функции представления) в приложении. Конечная точка автоматически добавляется с именем модуля.
-
app -
ссылка на текущее приложение
-
blueprint -
ссылка на модуль, который создал это состояние настройки.
-
first_registration -
так как модули могут быть зарегистрированы в приложении несколько раз, а не всё хочет быть зарегистрировано несколько раз, этот атрибут может быть использован, чтобы выяснить, был ли модуль зарегистрирован в прошлом.
-
options -
словарь со всеми опциями, которые были переданы методу
register_blueprint().
-
subdomain -
Поддомен, для которого должен быть активен модуль,
Noneв противном случае.
-
url_defaults -
Словарь со значениями по умолчанию для URL, который добавляется к каждому URL, определённому с помощью модуля.
-
url_prefix -
Префикс, который должен использоваться для всех URL, определённых в модуле.
Сигналы
Журнал изменений
Новое в версии 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'Журнал изменений
Новое в версии 0.10.
-
flask.appcontext_popped -
Этот сигнал отправляется при удалении контекста приложения. Отправителем является приложение. Он обычно соответствует сигналу
appcontext_tearing_down.Журнал изменений
Новое в версии 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)Журнал изменений
Новое в версии 0.10.
-
class signals.Namespace -
Псевдоним для
blinker.base.Namespace, если blinker доступен, иначе – псевдокласс, создающий фиктивные сигналы. Этот класс доступен для расширений Flask, которые хотят обеспечить ту же систему обратной совместимости, что и сам Flask.-
signal(name, doc=None) -
Создаёт новый сигнал для этого пространства имён, если blinker доступен, иначе возвращает фиктивный сигнал, у которого метод send ничего не делает, но при этом выдаёт
RuntimeErrorдля всех других операций, включая подключение.
-
Представления на основе классов
Журнал изменений
Новое в версии 0.7.
-
class flask.views.View -
Унаследуйте от этого класса и переопределите
dispatch_request(), чтобы создать общее представление на основе класса. Вызовитеas_view(), чтобы создать функцию представления, которая создаёт экземпляр класса с заданными аргументами и вызывает его методdispatch_requestс любыми переменными URL.Подробное руководство см. в разделе Представления на основе классов.
class Hello(View): init_every_request = False def dispatch_request(self, name): return f"Hello, {name}!" app.add_url_rule( "/hello/<name>", view_func=Hello.as_view("hello") )Установите
methodsв классе, чтобы изменить методы, которые принимает представление.Установите
decoratorsв классе, чтобы применить список декораторов к сгенерированной функции представления. Декораторы, применённые к самому классу, не будут применены к сгенерированной функции представления!Установите
init_every_requestвFalseдля повышения эффективности, если только вам не нужно хранить данные, глобальные для запроса, вself.-
classmethod as_view(name, *class_args, **class_kwargs) -
Преобразует класс в функцию представления, которая может быть зарегистрирована для маршрута.
По умолчанию сгенерированное представление создаст новый экземпляр класса представления для каждого запроса и вызовет его метод
dispatch_request(). Если класс представления устанавливаетinit_every_requestвFalse, тот же экземпляр будет использоваться для каждого запроса.Аргументы, переданные этому методу, передаются методу класса
__init__.Изменено в версии 2.2: Добавлен атрибут класса
init_every_request.
-
-
Union[Callable[[…], Union[Response, str, bytes, Список[Любой], Словарь[str, Любой], Итератор[str], Итератор[bytes], Кортеж[Union[Response, str, bytes, Список[Любой], Словарь[str, Любой], Итератор[str], Итератор[bytes]], Union[Headers, Словарь[str, Union[str, Список[str], Кортеж[str, …]]], Последовательность[Кортеж[str, Union[str, Список[str], Кортеж[str, …]]]]]], Кортеж[Union[Response, str, bytes, Список[Любой], Словарь[str, Любой], Итератор[str], Итератор[bytes]], int], Кортеж[Union[Response, str, bytes, Список[Любой], Словарь[str, Любой], Итератор[str], Итератор[bytes]], int, Union[Headers, Словарь[str, Union[str, Список[str], Кортеж[str, …]]], Последовательность[Кортеж[str, Union[str,
-
List[str], Tuple[str, …]]]]]], WSGIApplication]], Callable[[…], Awaitable[Union[Response, str, bytes, List[Any], Mapping[str, Any], Iterator[str], Iterator[bytes], Tuple[Union[Response, str, bytes, List[Any], Mapping[str, Any], Iterator[str], Iterator[bytes]], Union[Headers, Mapping[str, Union[str, List[str], Tuple[str, …]]], Sequence[Tuple[str, Union[str, List[str], Tuple[str, …]]]]]], Tuple[Union[Response, str, bytes, List[Any], Mapping[str, Any], Iterator[str], Iterator[bytes]], int], Tuple[Union[Response, str, bytes, List[Any], Mapping[str, Any], Iterator[str], Iterator[bytes]], int, Union[Headers, Mapping[str, Union[str, List[str], Tuple[str, …]]], Sequence[
-
-
decorators: ClassVar[List[Callable]] = [] -
Список декораторов, которые необходимо применить к сгенерированной функции представления в определённом порядке. Помните, что синтаксис
@decoratorприменяется снизу вверх, поэтому первый декоратор в списке будет самым нижним.Changelog
Добавлено в версии 0.8.
-
dispatch_request() -
Действительное поведение функции представления. Подклассы должны переопределить этот метод и вернуть допустимый ответ. Любые переменные из правила URL передаются в качестве именованных аргументов.
-
- Тип возвращаемого значения
-
Union[Response, str, bytes, Список[Любой], Отображение[str, Любой], Итератор[str], Итератор[bytes], Кортеж[Объединение[Response, str, bytes, Список[Любой], Отображение[str, Любой], Итератор[str], Итератор[bytes]], Объединение[Headers, Отображение[str, Объединение[str, Список[str], Кортеж[str, …]]], Последовательность[Кортеж[str, Объединение[str, Список[str], Кортеж[str, …]]]]]], Кортеж[Объединение[Response, str, bytes, Список[Любой], Отображение[str, Любой], Итератор[str], Итератор[bytes]], int], Кортеж[Объединение[Response, str, bytes, Список[Любой], Отображение[str, Любой], Итератор[str], Итератор[bytes]], int, Объединение[Headers, Отображение[str, Объединение[str, Список[str], Кортеж[str, …]]], Последовательность[Кортеж[str, Объединение[str, Список[str],
-
-
init_every_request: ClassVar[bool] = True -
По умолчанию для каждого запроса создаётся новый экземпляр этого класса представления. Если подкласс представления устанавливает это значение в
False, один и тот же экземпляр используется для каждого запроса.Один экземпляр более эффективен, особенно если при инициализации выполняется сложная настройка. Однако хранение данных в
selfбольше не безопасно для разных запросов, и вместо этого следует использоватьg.Новое в версии 2.2.
-
methods: ClassVar[Optional[Collection[str]]] = None -
Методы, для которых зарегистрировано это представление. Использует те же значения по умолчанию (
["GET", "HEAD", "OPTIONS"]) что иrouteиadd_url_ruleпо умолчанию.
-
provide_automatic_options: ClassVar[Optional[bool]] = None -
Управляет тем, обрабатывается ли метод
OPTIONSавтоматически. Использует те же значения по умолчанию (True) что иrouteиadd_url_ruleпо умолчанию.
-
-
class flask.views.MethodView -
Перенаправляет методы запроса соответствующим методам экземпляра. Например, если вы реализуете метод
get, он будет использоваться для обработки запросовGET.Это может быть полезно для определения REST API.
methodsавтоматически устанавливается на основе методов, определённых в классе.См. Классовые представления для подробного руководства.
class CounterAPI(MethodView): def get(self): return str(session.get("counter", 0)) def post(self): session["counter"] = session.get("counter", 0) + 1 return redirect(url_for("counter")) app.add_url_rule( "/counter", view_func=CounterAPI.as_view("counter") )-
dispatch_request(**kwargs) -
Фактическое поведение функции представления. Подклассы должны переопределить его и вернуть допустимый ответ. Все переменные из правила URL передаются в качестве именованных аргументов.
- Параметры
-
kwargs (Any) –
- Тип возвращаемого значения
-
-
Union[Response, str, bytes, Список[Любой], Отображение[str, Любой], Итератор[str], Итератор[bytes], Кортеж[Union[Response, str, bytes, Список[Любой], Отображение[str, Любой], Итератор[str], Итератор[bytes]], Union[Headers, Отображение[str, Union[str, Список[str], Кортеж[str, …]]], Последовательность[Кортеж[str, Union[str, Список[str], Кортеж[str, …]]]]]], Кортеж[Union[Response, str, bytes, Список[Любой], Отображение[str, Любой], Итератор[str], Итератор[bytes]], int], Кортеж[Union[Response, str, bytes, Список[Любой], Отображение[str, Любой], Итератор[str], Итератор[bytes]], int, Union[Headers, Отображение[str, Union[str, Список[str], Кортеж[str, …]]], Последовательность[Кортеж[str, Union[str, Список[str],
-
Регистрации правил маршрутизации URL
В целом, есть три способа определения правил для системы маршрутизации:
- Можно использовать декоратор
flask.Flask.route(). - Можно использовать функцию
flask.Flask.add_url_rule(). - Можно напрямую обратиться к внутренней системе маршрутизации Werkzeug, которая представлена как
flask.Flask.url_map.
Переменные части маршрута могут быть указаны в угловых скобках (/user/<username>). По умолчанию, переменная часть в URL принимает любой строковый текст без косой черты, однако можно указать другой преобразователь, используя <converter:name>.
Переменные части передаются в функцию представления в качестве ключевых аргументов.
Доступны следующие преобразователи:
| принимает любой текст без косой черты (по умолчанию) |
| принимает целые числа |
| подобно |
| подобно по умолчанию, но также принимает косые черты |
| сопоставляет один из предоставленных элементов |
| принимает строки 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. Идея заключается в том, чтобы сохранить каждый URL уникальным, поэтому применяются следующие правила:
- Если правило заканчивается слешем, а пользователь запрашивает его без слеша, пользователь автоматически перенаправляется на ту же страницу со слешем в конце.
- Если правило не заканчивается слешем, а пользователь запрашивает страницу со слешем, генерируется ошибка 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.
| правило URL в виде строки |
| имя конечной точки для зарегистрированного правила URL. Flask сам по умолчанию предполагает, что имя функции представления является именем конечной точки, если не указано явно. |
| функция, которая вызывается при обработке запроса к указанной конечной точке. Если это не указано, можно указать функцию позже, сохранив ее в словаре |
| словарь со значениями по умолчанию для этого правила. См. пример выше, чтобы узнать, как работают значения по умолчанию. |
| указывает правило для поддомена, если используется сопоставление по поддомену. Если не указано, предполагается поддомен по умолчанию. |
| опции, передаваемые объекту |
Параметры функции представления
Для внутреннего использования функции представления могут иметь некоторые атрибуты, настраивающие поведение, над которым функция представления обычно не имеет контроля. Следующие атрибуты могут быть предоставлены необязательно, чтобы переопределить некоторые значения по умолчанию для add_url_rule() или общее поведение:
-
__name__: Имя функции по умолчанию используется в качестве конечной точки. Если endpoint указан явно, используется это значение. Кроме того, по умолчанию оно будет добавляться с именем модуля BluePrint. Это не настраивается непосредственно из функции. -
methods: Если методы не указаны при добавлении правила URL, Flask будет искать в объекте функции представления атрибутmethods. Если он существует, Flask будет использовать информацию о методах из него. -
provide_automatic_options: Если этот атрибут установлен, Flask будет либо включить, либо отключить автоматическую реализацию HTTPOPTIONSответа. Это может быть полезно при работе с декораторами, которые хотят настроить ответ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 (bool) – если значение True, то будут добавлены команды run и shell по умолчанию.
-
add_version_option (bool) – добавляет опцию
--version. - create_app (t.Callable[..., Flask] | None) – необязательный обратный вызов, которому передаётся информация о скрипте, а возвращает загруженное приложение.
-
load_dotenv (bool) – Загрузить ближайшие файлы
.envи.flaskenvдля установки переменных окружения. Также изменит рабочую директорию на директорию, содержащую первый найденный файл. - set_debug_flag (bool) – Установить флаг отладки приложения.
- extra (t.Any) –
- Тип возвращаемого значения
-
None
Изменено в версии 2.2: Добавлены опции
-A/--app,--debug/--no-debug,-e/--env-file.Изменено в версии 2.2: При выполнении команд
app.cliконтекст приложения подталкивается, поэтому@with_appcontextбольше не требуется для этих команд.Журнал изменений
Изменено в версии 1.0: Если установлен, python-dotenv будет использован для загрузки переменных окружения из файлов
.envи.flaskenv.-
get_command(ctx, name) -
Принимая контекст и имя команды, возвращает объект
Commandесли он существует, в противном случае возвращаетNone.
-
list_commands(ctx) -
Возвращает список имён подкоманд в порядке их появления.
-
make_context(info_name, args, parent=None, **extra) -
Эта функция, когда получает имя info и аргументы, запускает разбор и создаёт новый
Context. Однако она не вызывает фактический обратный вызов команды.Для быстрой настройки используемого класса контекста без переопределения этого метода установите атрибут
context_class.- Параметры
-
- info_name (str | None) – имя info для этого вызова. Как правило, это самое описательное имя для скрипта или команды. Для скрипта верхнего уровня это обычно имя скрипта, для команд ниже – имя команды.
- args (list[str]) – аргументы для разбора как список строк.
- parent (Optional[click.core.Context]) – родительский контекст, если доступен.
- extra (Any) – дополнительные ключевые аргументы, переданные конструктору контекста.
- Тип возвращаемого значения
Изменено в версии 8.0: Добавлен атрибут
context_class.
-
parse_args(ctx, args) -
Принимая контекст и список аргументов, создаёт парсер и анализирует аргументы, затем изменяет контекст по необходимости. Автоматически вызывается методом
make_context().- Параметры
-
- ctx (click.core.Context) –
- args (list[str]) –
- Тип возвращаемого значения
-
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.- Параметры
- Тип возвращаемого значения
-
None
-
app_import_path -
Путь импорта приложения Flask (необязательно).
-
create_app -
Функция, которая принимает объект script info для создания экземпляра приложения (необязательно).
-
data: t.Dict[t.Any, t.Any] -
Словарь с произвольными данными, которые можно связать с этим объектом script info.
-
load_app() -
Загружает приложение Flask (если оно ещё не загружено) и возвращает его. Вызов этого метода несколько раз вернёт уже загруженное приложение.
- Тип возвращаемого значения
-
flask.cli.load_dotenv(path=None) -
Загружает файлы «dotenv» в порядке приоритета, чтобы установить переменные среды.
Если переменная среды уже установлена, она не перезаписывается. Поэтому более ранние файлы в списке имеют приоритет перед более поздними.
Это ничто, если python-dotenv не установлен.
- Параметры
-
path (Optional[Union[str, os.PathLike]]) – Загрузить файл по этому пути вместо поиска.
- Возвращает
-
Trueесли файл был загружен. - Тип возвращаемого значения
Изменения
Изменено в версии 2.0: Текущая директория не изменяется на расположение загруженного файла.
Изменено в версии 2.0: При загрузке файлов env используется кодировка по умолчанию UTF-8.
Изменено в версии 1.1.0: Возвращает
Falseесли python-dotenv не установлен или указанный путь не является файлом.Добавлена в версии 1.0.
-
flask.cli.with_appcontext(f) -
Оборачивает функцию-обработчик, гарантируя, что она будет выполнена в контексте приложения сценария.
Пользовательские команды (и их параметры), зарегистрированные в
app.cliилиblueprint.cli, всегда будут иметь доступ к контексту приложения. В этом случае декоратор не требуется.Изменено в версии 2.2: Контекст приложения активен как для подкоманд, так и для обработчика-декоратора. Контекст приложения всегда доступен для команд
app.cliи обработчиков параметров.
-
flask.cli.pass_script_info(f) -
Помечает функцию так, чтобы экземпляр
ScriptInfoбыл передан в качестве первого аргумента обработчику click.- Параметры
-
f (click.decorators.F) –
- Тип возвращаемого значения
-
click.decorators.F
-
flask.cli.run_command = <Command run> -
Запуск локального сервера разработки.
Этот сервер предназначен только для целей разработки. Он не обеспечивает стабильность, безопасность или производительность серверов WSGI для производства.
Релоадер и отладчик включены по умолчанию с опцией «–debug».
-
flask.cli.shell_command = <Command shell> -
Запуск интерактивной оболочки Python в контексте данного приложения Flask. Приложение заполнит стандартное пространство имён этой оболочки в соответствии с её конфигурацией.
Это полезно для выполнения небольших фрагментов управляющего кода без необходимости ручной конфигурации приложения.
© 2007–2022 Pallets
Licensed under the BSD 3-clause License.
https://flask.palletsprojects.com/en/2.2.x/api/