API
В этой части документации описаны все интерфейсы Flask. Там, где Flask зависит от внешних библиотек, мы описываем наиболее важные элементы здесь и предоставляем ссылки на каноническую документацию.
Объект приложения
-
class flask.Flask(import_name, static_url_path=None, static_folder='static', static_host=None, host_matching=False, subdomain_matching=False, template_folder='templates', instance_path=None, instance_relative_config=False, root_path=None) -
Объект flask реализует WSGI-приложение и служит центральным объектом. Он принимает имя модуля или пакета приложения. После создания он будет служить центральным реестром для функций представлений, правил URL, конфигурации шаблонов и многое другое.
Имя пакета используется для разрешения ресурсов изнутри пакета или папки, в которой содержится модуль, в зависимости от того, является ли параметр пакета фактическим пакетом Python (папкой с файлом
__init__.pyвнутри) или стандартным модулем (просто файл.py).Дополнительную информацию о загрузке ресурсов см. в
open_resource().Обычно вы создаёте экземпляр
Flaskв главном модуле или в файле__init__.pyвашего пакета, как показано ниже:from flask import Flask app = Flask(__name__)
О первом параметре
Идея первого параметра — дать Flask представление о том, что принадлежит вашему приложению. Это имя используется для поиска ресурсов в файловой системе, может использоваться расширениями для улучшения отладочной информации и многого другого.
Поэтому важно, что вы предоставляете. Если вы используете один модуль,
__name__— всегда правильное значение. Однако, если вы используете пакет, обычно рекомендуется жестко закодировать имя вашего пакета.Например, если ваше приложение определено в
yourapplication/app.pyвы должны создать его с одной из двух версий ниже:app = Flask('yourapplication') app = Flask(__name__.split('.')[0])Почему так? Приложение будет работать даже с
__name__, благодаря тому, как ищутся ресурсы. Однако это сделает отладку более сложной. Некоторые расширения могут делать предположения, основанные на имени импорта вашего приложения. Например, расширение Flask-SQLAlchemy будет искать код в вашем приложении, который вызвал запрос SQL в отладочном режиме. Если имя импорта не настроено должным образом, эта отладочная информация теряется. (Например, он будет собирать только запросы SQL вyourapplication.appи не вyourapplication.views.frontend).Журнал изменений
В версии 1.0: Были добавлены параметры
host_matchingиstatic_host.В версии 1.0: Был добавлен параметр
subdomain_matching. Сопоставление по поддоменам теперь необходимо включать вручную. УстановкаSERVER_NAMEне подразумевает его включения.В версии 0.11: Был добавлен параметр
root_path.В версии 0.8: Были добавлены параметры
instance_pathиinstance_relative_config.В версии 0.7: Были добавлены параметры
static_url_path,static_folder, иtemplate_folder.- Параметры
-
- import_name (str) – имя пакета приложения
-
static_url_path (Optional[str]) – может использоваться для задания другого пути к статическим файлам в веб-приложении. По умолчанию используется имя папки
static_folder. -
static_folder (Optional[str]) – папка со статическими файлами, которые будут обслуживаться по адресу
static_url_path. Относительно корня приложенияroot_pathили абсолютный путь. По умолчанию'static'. -
static_host (Optional[str]) – хост, используемый при добавлении статического маршрута. По умолчанию None. Необходим при использовании
host_matching=Trueс настроеннымstatic_folder. -
host_matching (bool) – установить атрибут
url_map.host_matching. По умолчанию False. -
subdomain_matching (bool) – рассматривать поддомен относительно
SERVER_NAMEпри сопоставлении маршрутов. По умолчанию False. -
template_folder (Optional[str]) – папка, содержащая шаблоны, которые должны использоваться приложением. По умолчанию папка
'templates'в корне приложения. -
instance_path (Optional[str]) – альтернативный путь к папке приложения. По умолчанию предполагается, что папка
'instance'рядом с пакетом или модулем — это путь к папке приложения. -
instance_relative_config (bool) – если установлено в
True, относительные имена файлов для загрузки конфигурации предполагаются относительными к пути к папке приложения, а не к корню приложения. - root_path (Optional[str]) – путь к корню файлов приложения. Это следует устанавливать вручную только в тех случаях, когда его нельзя определить автоматически, например, для пространств имён пакетов.
-
add_template_filter(f, name=None) -
Регистрация пользовательского фильтра шаблонов. Работает точно так же, как декоратор
template_filter().
-
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"].HEADвсегда добавляется автоматически, иOPTIONSдобавляется автоматически по умолчанию.Параметр
view_funcнеобязателен, но если правило должно участвовать в маршрутизации, имя конечной точки должно быть связано с функцией представления в какой-то момент с помощью декоратораendpoint().app.add_url_rule("/", endpoint="index") @app.endpoint("index") def index(): ...Если у
view_funcесть атрибутrequired_methods, эти методы добавляются к переданным и автоматическим методам. Если у него есть атрибутprovide_automatic_methods, он используется в качестве значения по умолчанию, если параметр не передан.- Параметры
-
- rule (str) – Строка правила URL.
-
endpoint (Необязательно[str]) – Имя конечной точки для связи с правилом и функцией представления. Используется при маршрутизации и построении URL. По умолчанию
view_func.__name__. - view_func (Необязательно[Callable]) – Функция представления, которую следует связать с именем конечной точки.
-
provide_automatic_options (Необязательно[bool]) – Добавить метод
OPTIONSи автоматически отвечать на запросыOPTIONS. -
options (Any) – Дополнительные параметры, передаваемые объекту
Rule.
- Тип возвращаемого значения
-
after_request(f) -
Регистрация функции, которая выполняется после каждого запроса к этому объекту.
Функция вызывается с объектом ответа и должна вернуть объект ответа. Это позволяет функциям изменять или заменять ответ перед отправкой.
Если функция вызывает исключение, любые оставшиеся функции
after_requestне будут вызваны. Поэтому это не следует использовать для действий, которые должны быть выполнены, таких как закрытие ресурсов. Используйтеteardown_request()для этого.
-
after_request_funcs: t.Dict[AppOrBlueprintKey, t.List[AfterRequestCallable]] -
Структура данных функций, которые вызываются в конце каждого запроса, в формате
{scope: [functions]}. Ключscope— имя плагина, для которого функции активны, илиNoneдля всех запросов.Для регистрации функции используйте декоратор
after_request().Эта структура данных является внутренней. Ее не следует изменять напрямую, и ее формат может быть изменен в любое время.
-
app_context() -
Создание
AppContext. Используйте как блокwithдля помещения контекста, что сделаетcurrent_appуказывающим на это приложение.Контекст приложения автоматически помещается
RequestContext.push()при обработке запроса и при выполнении команды командной строки. Используйте это для ручного создания контекста вне этих ситуаций.with app.app_context(): init_db()См. Контекст приложения.
Changelog
Новое в версии 0.9.
- Тип возвращаемого значения
-
app_ctx_globals_class -
Псевдоним
flask.ctx._AppCtxGlobals
-
async_to_sync(func) -
Возвращает функцию синхронизации, которая выполнит функцию корутины.
result = app.async_to_sync(func)(*args, **kwargs)
Переопределите этот метод, чтобы изменить способ преобразования приложения асинхронного кода в синхронно вызываемый.
Новое в версии 2.0.
- Параметры
-
func (Callable[[...], Coroutine]) –
- Тип возвращаемого значения
-
Callable[[…], Any]
-
auto_find_instance_path() -
Попытка найти путь к экземпляру, если он не был передан в конструктор класса приложения. В основном он вычислит путь к папке с именем
instanceрядом с вашим основным файлом или пакетом.Changelog
Новое в версии 0.8.
- Тип возвращаемого значения
-
before_first_request(f) -
Регистрация функции, которая выполняется перед первым запросом к этому экземпляру приложения.
Функция будет вызвана без аргументов, и ее возвращаемое значение игнорируется.
Changelog
Новое в версии 0.8.
-
before_first_request_funcs: t.List[BeforeRequestCallable] -
Список функций, которые будут вызваны в начале первого запроса к этому экземпляру. Для регистрации функции используйте декоратор
before_first_request().Changelog
Новое в версии 0.8.
-
before_request(f) -
Регистрация функции, которая выполняется перед каждым запросом.
Например, это можно использовать для открытия подключения к базе данных или для загрузки вошедшего в систему пользователя из сессии.
@app.before_request def load_user(): if "user_id" in session: g.user = db.session.get(session["user_id"])Функция вызывается без аргументов. Если она возвращает значение, отличное от
None, это значение обрабатывается как возвращаемое значение представления, и дальнейшая обработка запроса прекращается.
-
before_request_funcs: t.Dict[AppOrBlueprintKey, t.List[BeforeRequestCallable]] -
Структура данных функций, которые вызываются в начале каждого запроса, в формате
{scope: [functions]}. Ключscope— имя плагина, для которого функции активны, илиNoneдля всех запросов.Для регистрации функции используйте декоратор
before_request().Эта структура данных является внутренней. Ее не следует изменять напрямую, и ее формат может быть изменен в любое время.
-
-
blueprints: t.Dict[str, ‘Blueprint’] -
Сопоставление зарегистрированных имен Blueprint с объектами Blueprint. Словарь сохраняет порядок регистрации Blueprint. Blueprints могут быть зарегистрированы несколько раз, этот словарь не отслеживает, сколько раз они были подключены.
Changelog
Добавлено в версии 0.7.
-
cli -
Группа команд Click для регистрации команд CLI для этого объекта. Команды доступны из команды
flaskпосле того, как приложение было обнаружено и были зарегистрированы Blueprint.
-
config -
Словарь конфигурации как
Config. Он ведет себя точно так же, как обычный словарь, но поддерживает дополнительные методы для загрузки конфигурации из файлов.
-
config_class -
Псевдоним для
flask.config.Config
-
context_processor(f) -
Регистрирует функцию обработчика контекста шаблона.
-
create_global_jinja_loader() -
Создаёт загрузчик для среды Jinja2. Может использоваться для переопределения только загрузчика, сохраняя остальное неизменным. Не рекомендуется переопределять эту функцию. Вместо этого следует переопределить функцию
jinja_loader().Глобальный загрузчик распределяет между загрузчиками приложения и отдельных Blueprint.
Changelog
Добавлено в версии 0.7.
- Тип возвращаемого значения
-
flask.templating.DispatchingJinjaLoader
-
create_jinja_environment() -
Создаёт среду Jinja на основе
jinja_optionsи различных методов приложения, связанных с Jinja. Изменениеjinja_optionsпосле этого не повлияет. Также добавляет в среду глобальные переменные и фильтры Flask.Changelog
Изменено в версии 0.11:
Environment.auto_reloadустанавливается в соответствии сTEMPLATES_AUTO_RELOADпараметром конфигурации.Добавлено в версии 0.5.
- Тип возвращаемого значения
-
flask.templating.Environment
-
create_url_adapter(request) -
Создаёт адаптер URL для данного запроса. Адаптер URL создаётся в момент, когда контекст запроса ещё не настроен, поэтому запрос передаётся явно.
Changelog
Изменено в версии 1.0:
SERVER_NAMEбольше не неявно включает соответствие по поддоменам. Используйтеsubdomain_matchingвместо этого.Изменено в версии 0.9: Теперь его можно вызывать и без объекта запроса, когда адаптер URL создаётся для контекста приложения.
Добавлено в версии 0.6.
- Параметры
-
request (Optional[flask.wrappers.Request]) –
- Тип возвращаемого значения
-
Optional[werkzeug.routing.MapAdapter]
-
property debug: bool -
Включён ли режим отладки. При использовании
flask runдля запуска сервера разработки, интерактивный отладчик будет отображаться для необработанных исключений, а сервер будет перезагружаться при изменении кода. Соответствует ключу конфигурацииDEBUG. Включается, когдаenvравен'development', и переопределяется переменной средыFLASK_DEBUG. Может работать некорректно, если установлен в коде.Не включайте режим отладки при развертывании в производственной среде.
Значение по умолчанию:
True, еслиenvравен'development', илиFalseв противном случае.
-
default_config = {'APPLICATION_ROOT': '/', 'DEBUG': None, 'ENV': None, 'EXPLAIN_TEMPLATE_LOADING': False, 'JSONIFY_MIMETYPE': 'application/json', 'JSONIFY_PRETTYPRINT_REGULAR': False, 'JSON_AS_ASCII': True, 'JSON_SORT_KEYS': True, 'MAX_CONTENT_LENGTH': None, 'MAX_COOKIE_SIZE': 4093, 'PERMANENT_SESSION_LIFETIME': datetime.timedelta(days=31), 'PREFERRED_URL_SCHEME': 'http', 'PRESERVE_CONTEXT_ON_EXCEPTION': None, 'PROPAGATE_EXCEPTIONS': None, 'SECRET_KEY': None, 'SEND_FILE_MAX_AGE_DEFAULT': None, 'SERVER_NAME': None, 'SESSION_COOKIE_DOMAIN': None, 'SESSION_COOKIE_HTTPONLY': True, 'SESSION_COOKIE_NAME': 'session', 'SESSION_COOKIE_PATH': None, 'SESSION_COOKIE_SAMESITE': None, 'SESSION_COOKIE_SECURE': False, 'SESSION_REFRESH_EACH_REQUEST': True, 'TEMPLATES_AUTO_RELOAD': None, 'TESTING': False, 'TRAP_BAD_REQUEST_ERRORS': None, 'TRAP_HTTP_EXCEPTIONS': False, 'USE_X_SENDFILE': False} -
Параметры конфигурации по умолчанию.
-
-
dispatch_request() -
Выполняет обработку запроса. Сопоставляет URL и возвращает значение обработчика представления или обработчика ошибок. Это не обязательно должен быть объект ответа. Для преобразования возвращаемого значения в правильный объект ответа используйте
make_response().Журнал изменений
Изменено в версии 0.7: Больше не обрабатывает исключения, этот код был перемещён в новый
full_dispatch_request().- Тип возвращаемого значения
-
Union[Ответ, AnyStr, Dict[строка, Any], Generator[AnyStr, None, None], Tuple[Union[Ответ, AnyStr, Dict[строка, Any], Generator[AnyStr, None, None]], Union[Headers, Dict[строка, Union[строка, List[строка], Tuple[строка, …]]], List[Tuple[строка, Union[строка, List[строка], Tuple[строка, …]]]]]], Tuple[Union[Ответ, AnyStr, Dict[строка, Any], Generator[AnyStr, None, None]], целое число], Tuple[Union[Ответ, AnyStr, Dict[строка, Any], Generator[AnyStr, None, None]], целое число, Union[Headers, Dict[строка, Union[строка, List[строка], Tuple[строка, …]]], List[Tuple[строка, Union[строка, List[строка], Tuple[строка, …]]]]]], WSGIApplication]
-
do_teardown_appcontext(exc=<object object>) -
Вызывается непосредственно перед удалением контекста приложения.
При обработке запроса контекст приложения удаляется после контекста запроса. См.
do_teardown_request().Вызывает все функции, помеченные декоратором
teardown_appcontext(). Затем отправляется сигналappcontext_tearing_down.Вызывается
AppContext.pop().Журнал изменений
Новое в версии 0.9.
- Параметры
-
exc (Optional[BaseException]) –
- Тип возвращаемого значения
-
do_teardown_request(exc=<object object>) -
Вызывается после обработки запроса и возврата ответа, непосредственно перед удалением контекста запроса.
Вызывает все функции, помеченные декоратором
teardown_request(), иBlueprint.teardown_request(), если запрос обрабатывал blueprint. Наконец, отправляется сигналrequest_tearing_down.Вызывается
RequestContext.pop(), который может быть задержан во время тестирования для сохранения доступа к ресурсам.- Параметры
-
exc (Optional[BaseException]) – Необработанное исключение, поднятое во время обработки запроса. Определяется из текущей информации об исключении, если не передано. Передаётся каждой функции завершения.
- Тип возвращаемого значения
Журнал изменений
Изменено в версии 0.9: Добавлен аргумент
exc.
-
endpoint(endpoint) -
Декорирует функцию представления для регистрации её под данным конечным пунктом. Используется, если правило добавлено без
view_funcс помощьюadd_url_rule().app.add_url_rule("/ex", endpoint="example") @app.endpoint("example") def example(): ...- Параметры
-
endpoint (строка) – Имя конечного пункта, которое будет ассоциировано с функцией представления.
- Тип возвращаемого значения
-
Callable
-
ensure_sync(func) -
Обеспечивает синхронность функции для WSGI-рабочих процессов. Простые
defфункции возвращаются как есть.async defфункции оборачиваются для выполнения и ожидания ответа.Переопределите этот метод, чтобы изменить способ работы с асинхронными представлениями приложения.
Новое в версии 2.0.
- Параметры
-
func (Callable) –
- Тип возвращаемого значения
-
Callable
-
env -
Среда, в которой работает приложение. Flask и расширения могут включать поведение, основанное на среде, например, включение отладочного режима. Соответствует ключу конфигурации
ENV. Устанавливается переменной окруженияFLASK_ENV, и может работать непредсказуемо, если установлено в коде.Не включайте отладку при развертывании в продакшене.
Значение по умолчанию:
'production'
-
-
error_handler_spec: t.Dict[AppOrBlueprintKey, t.Dict[t.Optional[int], t.Dict[t.Type[Exception], ErrorHandlerCallable]]] -
Структура данных зарегистрированных обработчиков ошибок в формате
{scope: {code: {class: handler}}}`. Ключscope— имя используемого блейнпринта, илиNoneдля всех запросов. Ключcode— HTTP код состояния дляHTTPException, илиNoneдля других исключений. Внутренний словарь сопоставляет классы исключений с функциями-обработчиками.Для регистрации обработчика ошибок используйте декоратор
errorhandler().Эта структура данных внутренняя. Не следует изменять её напрямую, и её формат может измениться в любое время.
-
errorhandler(code_or_exception) -
Регистрация функции для обработки ошибок по коду или классу исключения.
Декоратор, используемый для регистрации функции, связанной с кодом ошибки. Пример:
@app.errorhandler(404) def page_not_found(error): return 'This page does not exist', 404Вы также можете регистрировать обработчики для произвольных исключений:
@app.errorhandler(DatabaseError) def special_exception_handler(error): return 'Database connection failed', 500Changelog
New in version 0.7: Используйте
register_error_handler()вместо непосредственного измененияerror_handler_specдля глобальных обработчиков ошибок приложения.New in version 0.7: Теперь можно регистрировать также пользовательские типы исключений, которые не обязательно должны быть подклассами класса
HTTPException.
-
extensions: dict -
Место, где расширения могут хранить специфичные для приложения данные. Например, здесь расширение может хранить движки баз данных и подобные вещи.
Ключ должен соответствовать имени модуля расширения. Например, в случае расширения «Flask-Foo» в
flask_foo, ключ будет'foo'.Changelog
New in version 0.7.
-
full_dispatch_request() -
Обрабатывает запрос и выполняет предобработку и пост обработку запроса, а также перехват и обработку исключений HTTP.
Changelog
New in version 0.7.
- Return type
-
get(rule, **options) -
Сокращение для
route()сmethods=["GET"].New in version 2.0.
- Parameters
-
- rule (str) –
- options (Any) –
- Return type
-
Callable
-
get_send_file_max_age(filename) -
Используется
send_file()для определения значения кешаmax_ageдля заданного пути к файлу, если оно не было передано.По умолчанию возвращает
SEND_FILE_MAX_AGE_DEFAULTиз конфигурацииcurrent_app. По умолчанию этоNone, что говорит браузеру использовать условные запросы вместо кэширования по времени, что обычно предпочтительнее.Changed in version 2.0: Значение по умолчанию конфигурации изменено на
Noneвместо 12 часов.Changelog
New in version 0.9.
-
property got_first_request: bool -
Это атрибут, который устанавливается в
Trueесли приложение начало обработку первого запроса.Changelog
New in version 0.8.
-
handle_exception(e) -
Обрабатывает исключение, для которого не был зарегистрирован обработчик ошибок или которое было вызвано из обработчика ошибок. Это всегда приводит к ответу 500
InternalServerError.Всегда отправляет сигнал
got_request_exception.Если
propagate_exceptionsустановлено вTrue, например, в режиме отладки, ошибка будет повторно поднята, чтобы отладчик мог её отобразить. В противном случае исходное исключение будет записано в лог, и будет возвращен ответInternalServerError.Если обработчик ошибок зарегистрирован для
InternalServerErrorили500, он будет использован. Для согласованности, обработчик всегда будет получатьInternalServerError. Исходное необработанное исключение доступно какe.original_exception.Changelog
Changed in version 1.1.0: Обработчику всегда передаётся экземпляр
InternalServerError, устанавливаяoriginal_exceptionв необработанную ошибку.Changed in version 1.1.0: Функции
after_requestи другие операции завершения выполняются даже для стандартного ответа 500, когда нет обработчика.New in version 0.3.
- Parameters
-
e (Exception) –
- Return type
-
-
handle_http_exception(e) -
Обрабатывает исключение HTTP. По умолчанию это вызовет зарегистрированные обработчики ошибок и вернёт исключение в качестве ответа.
Журнал изменений
Изменено в версии 1.0.3:
RoutingException, используемый внутри для таких действий, как перенаправления слэшей во время маршрутизации, не передаётся обработчикам ошибок.Изменено в версии 1.0: Исключения ищутся по коду и по MRO, поэтому
HTTPExcpetionподклассы могут обрабатываться с помощью универсального обработчика для базовогоHTTPException.Новое в версии 0.3.
- Параметры
- Тип возвращаемого значения
-
Union[werkzeug.exceptions.HTTPException, Response, AnyStr, Dict[str, Any], Generator[AnyStr, None, None], Tuple[Union[Response, AnyStr, Dict[str, Any], Generator[AnyStr, None, None]], Union[Headers, Dict[str, Union[str, List[str], Tuple[str, …]]], List[Tuple[str, Union[str, List[str], Tuple[str, …]]]]]], Tuple[Union[Response, AnyStr, Dict[str, Any], Generator[AnyStr, None, None]], int], Tuple[Union[Response, AnyStr, Dict[str, Any], Generator[AnyStr, None, None]], int, Union[Headers, Dict[str, Union[str, List[str], Tuple[str, …]]], List[Tuple[str, Union[str, List[str], Tuple[str, …]]]]]]]], WSGIApplication]
-
-
handle_user_exception(e) -
Этот метод вызывается всякий раз, когда происходит исключение, которое должно быть обработано. Особый случай —
HTTPException, который передаётся методуhandle_http_exception(). Эта функция либо вернёт значение ответа, либо повторно поднимет исключение с тем же отслеживанием.Changelog
Изменено в версии 1.0: Ошибки ключей, поднятые из данных запроса, такие как
form, показывают неверный ключ в режиме отладки, а не общее сообщение о плохом запросе.Добавлено в версии 0.7.
- Параметры
-
e (Исключение) –
- Тип возвращаемого значения
-
Union[werkzeug.exceptions.HTTPException, Ответ, AnyStr, Dict[строка, Any], Generator[AnyStr, None, None], Tuple[Union[Ответ, AnyStr, Dict[строка, Any], Generator[AnyStr, None, None]], Union[Headers, Dict[строка, Union[строка, List[строка], Tuple[строка, …]]], List[Tuple[строка, Union[строка, List[строка], Tuple[строка, …]]]]]], WSGIApplication]
-
property has_static_folder: bool -
Trueеслиstatic_folderзадан.Changelog
Добавлено в версии 0.5.
-
import_name -
Имя пакета или модуля, к которому относится этот объект. Не изменяйте его после установки конструктором.
-
inject_url_defaults(endpoint, values) -
Прямо вставляет значения по умолчанию для заданного конечной точки в словарь значений, переданный. Это используется внутри и автоматически вызывается при построении URL.
Changelog
Добавлено в версии 0.7.
-
instance_path -
Содержит путь к папке экземпляра.
Changelog
Добавлено в версии 0.8.
-
iter_blueprints() -
Итерируется по всем blueprints в порядке их регистрации.
Changelog
Добавлено в версии 0.11.
- Тип возвращаемого значения
-
ValuesView[Blueprint]
-
property jinja_env: flask.templating.Environment -
Среда Jinja, используемая для загрузки шаблонов.
Среда создаётся при первом обращении к этому свойству. Изменение
jinja_optionsпосле этого не повлияет.
-
jinja_environment -
псевдоним
flask.templating.Environment
-
property jinja_loader: Optional[jinja2.loaders.FileSystemLoader] -
Загрузчик Jinja для шаблонов этого объекта. По умолчанию это класс
jinja2.loaders.FileSystemLoaderвtemplate_folder, если он задан.Changelog
Добавлено в версии 0.5.
-
jinja_options: dict = {} -
Параметры, передаваемые среде Jinja в
create_jinja_environment(). Изменение этих параметров после создания среды (обращение кjinja_env) не повлияет.Changelog
Изменено в версии 1.1.0: Это
dictвместоImmutableDict, для более удобной настройки.
-
json_decoder -
псевдоним
flask.json.JSONDecoder
-
json_encoder -
псевдоним
flask.json.JSONEncoder
-
-
log_exception(exc_info) -
Регистрирует исключение. Это вызывается методом
handle_exception(), если отладка отключена, и непосредственно перед вызовом обработчика. По умолчанию исключение регистрируется как ошибка в логгереlogger.Changelog
Добавлен в версии 0.8.
- Parameters
-
exc_info (Union[Tuple[type, BaseException, types.TracebackType], Tuple[None, None, None]]) –
- Возвращаемое значение
-
property logger: logging.Logger -
Стандартный Python
Loggerприложения, с тем же именем, что иname.В режиме отладки уровень логгера
levelбудет установлен наDEBUG.Если нет настроенных обработчиков, будет добавлен обработчик по умолчанию. Подробнее см. Ведение журналов.
Changelog
Изменено в версии 1.1.0: Логгер принимает то же имя, что и
name, а не жестко заданное"flask.app".Изменено в версии 1.0.0: Поведение упрощено. Логгер всегда имеет имя
"flask.app". Уровень устанавливается только во время конфигурирования, не проверяяapp.debugкаждый раз. Используется только один формат, а не разные в зависимости отapp.debug. Обработчики не удаляются, и обработчик добавляется только если обработчики еще не настроены.Добавлен в версии 0.3.
-
make_config(instance_relative=False) -
Используется для создания атрибута config конструктором Flask. Параметр
instance_relativeпередается из конструктора Flask (там он называетсяinstance_relative_config) и указывает, должна ли конфигурация относиться к пути экземпляра или корневому пути приложения.Changelog
Добавлен в версии 0.8.
- Parameters
-
instance_relative (bool) –
- Возвращаемое значение
-
make_default_options_response() -
Этот метод вызывается для создания ответа по умолчанию
OPTIONS. Это можно изменить, создав подкласс, чтобы изменить стандартное поведение ответовOPTIONS.Changelog
Добавлен в версии 0.7.
- Возвращаемое значение
-
-
make_response(rv) -
Преобразует возвращаемое значение из функции представления в экземпляр
response_class.- Параметры
-
rv (Union[Response, AnyStr, Dict[str, Any], Generator[AnyStr, None, None], Tuple[Union[Response, AnyStr, Dict[str, Any], Generator[AnyStr, None, None]], Union[Headers, Dict[str, Union[str, List[str], Tuple[str, ...]]], List[Tuple[str, Union[str, List[str], Tuple[str, ...]]]]], Tuple[Union[Response, AnyStr, Dict[str, Any], Generator[AnyStr, None, None]], int], Tuple[Union[Response, AnyStr, Dict[str, Any], Generator[AnyStr, None, None]], int, Union[Headers, Dict[str, Union[str, List[str], Tuple[str, ...]]], List[Tuple[str, Union[str, List[str], Tuple[str, ...]]]]]], WSGIApplication]) –
возвращаемое значение функции представления. Функция представления должна возвращать ответ. Возвращение
None, или окончание представления без возврата, запрещено. Разрешены следующие типы дляview_rv:-
str -
Создается объект ответа с строкой, закодированной в UTF-8, в качестве тела.
-
bytes -
Создается объект ответа с байтами в качестве тела.
-
dict -
Словарь, который будет сериализован с помощью jsonify перед возвратом.
-
tuple -
Любой из
(body, status, headers),(body, status), или(body, headers), гдеbody— любой из других разрешённых здесь типов,status— строка или целое число, аheaders— словарь или список(key, value)кортежей. Еслиbody— экземплярresponse_class,statusперезаписывает существующее значение, аheadersрасширяются. -
response_class -
Объект возвращается без изменений.
-
other Response class -
Объект преобразуется в
response_class. -
callable() -
Функция вызывается как WSGI-приложение. Результат используется для создания объекта ответа.
-
- Тип возвращаемого значения
Изменения
Изменено в версии 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.
- Параметры
-
- rule (str) –
- options (Any) –
- Тип возвращаемого значения
-
Callable
-
permanent_session_lifetime -
timedelta, используемый для установки даты истечения срока действия постоянной сессии. По умолчанию — 31 день, что обеспечивает примерно месячный срок действия постоянной сессии.Этот атрибут также можно настроить из конфигурации с ключом конфигурации
PERMANENT_SESSION_LIFETIME. По умолчаниюtimedelta(days=31)
-
post(rule, **options) -
Сокращение для
route()сmethods=["POST"].Новое в версии 2.0.
- Параметры
-
- rule (str) –
- options (Any) –
- Тип возвращаемого значения
-
Callable
-
preprocess_request() -
Вызывается перед обработкой запроса. Вызывает зарегистрированные в приложении и текущем шаблоне
url_value_preprocessorsобработчики значений URL. Затем вызывает зарегистрированные в приложении и шаблонеbefore_request_funcsфункции.Если любой обработчик
before_request()возвращает значение, отличное от None, это значение обрабатывается так, как если бы оно было возвращённым значением от представления, и дальнейшая обработка запроса прекращается.- Тип возвращаемого значения
-
Optional[Union[Response, AnyStr, Dict[str, Any], Generator[AnyStr, None, None], Tuple[Union[Response, AnyStr, Dict[str, Any], Generator[AnyStr, None, None]], Union[Headers, Dict[str, Union[str, List[str], Tuple[str, …]]], List[Tuple[str, Union[str, List[str], Tuple[str, …]]]]]], WSGIApplication]]
-
property preserve_context_on_exception: bool -
Возвращает значение конфигурации
PRESERVE_CONTEXT_ON_EXCEPTIONв случае его установки, иначе возвращается разумное значение по умолчанию.Изменения
Новое в версии 0.7.
-
process_response(response) -
Может быть переопределён для изменения объекта ответа перед отправкой его WSGI-серверу. По умолчанию вызывает все функции, декорированные
after_request().Изменения
Изменено в версии 0.5: Начиная с Flask 0.5, функции, зарегистрированные для выполнения после запроса, вызываются в обратном порядке регистрации.
- Параметры
-
response (flask.wrappers.Response) – объект
response_class. - Возвращаемое значение
-
новый объект ответа или тот же, должен быть экземпляром
response_class. - Тип возвращаемого значения
-
property propagate_exceptions: bool -
Возвращает значение конфигурации
PROPAGATE_EXCEPTIONSв случае его установки, иначе возвращается разумное значение по умолчанию.Изменения
Новое в версии 0.7.
-
-
put(rule, **options) -
Сокращение для
route()сmethods=["PUT"].Новое в версии 2.0.
- Параметры
-
- rule (str) –
- options (Any) –
- Тип возвращаемого значения
-
Callable
-
register_blueprint(blueprint, **options) -
Регистрирует
Blueprintв приложении. Аргументы ключевых слов, переданные этому методу, переопределят значения по умолчанию, установленные в чертеже.Вызывает метод
register()чертежа после записи чертежа вblueprintsприложения.- Параметры
-
- blueprint (Blueprint) – Чертеж для регистрации.
- url_prefix – Маршруты чертежа будут иметь этот префикс.
- subdomain – Маршруты чертежа будут соответствовать этому поддомену.
- url_defaults – Маршруты чертежа будут использовать эти значения по умолчанию для аргументов представления.
-
options (Any) – Дополнительные аргументы ключевых слов передаются в
BlueprintSetupState. К ним можно получить доступ в обратных вызовахrecord().
- Тип возвращаемого значения
Журнал изменений
Новое в версии 0.7.
-
register_error_handler(code_or_exception, f) -
Альтернативная функция присоединения ошибок к декоратору
errorhandler(), которая проще в использовании для не декоративного использования.Журнал изменений
Новое в версии 0.7.
- Параметры
-
- code_or_exception (Union[Type[Exception], int]) –
- f (Callable[[Exception], Union[Response, AnyStr, Dict[str, Any], Generator[AnyStr, None, None], Tuple[Union[Response, AnyStr, Dict[str, Any], Generator[AnyStr, None, None]], Union[Headers, Dict[str, Union[str, List[str], Tuple[str, ...]]], List[Tuple[str, Union[str, List[str], Tuple[str, ...]]]]]], Tuple[Union[Response, AnyStr, Dict[str, Any], Generator[AnyStr, None, None]], int], Tuple[Union[Response, AnyStr, Dict[str, Any], Generator[AnyStr, None, None]], int, Union[Headers, Dict[str, Union[str, List[str], Tuple[str, ...]]], List[Tuple[str, Union[str, List[str], Tuple[str, ...]]]]]]], WSGIApplication]]) –
- Тип возвращаемого значения
-
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в качестве параметра. Это позволит сохранить активным окно отслеживания ошибок отладчика, но отключит выполнение кода.Не рекомендуется использовать эту функцию для разработки с автоматической перезагрузкой, так как она слабо поддерживается. Вместо этого вы должны использовать поддержку
runскрипта командной строки flask.Обратите внимание
Flask будет подавлять любые ошибки сервера, используя общую страницу ошибок, если он не находится в режиме отладки. Таким образом, для включения только интерактивного отладчика без перезагрузки кода, необходимо вызвать
run()сdebug=Trueиuse_reloader=False. Установкаuse_debuggerвTrueбез включения режима отладки не перехватит никаких исключений, потому что их не будет.- Параметры
-
-
host (Необязательно[str]) – имя хоста для прослушивания. Установите его в значение
'0.0.0.0', чтобы сервер также был доступен извне. По умолчанию'127.0.0.1'или хост из переменной конфигурацииSERVER_NAME, если она присутствует. -
port (Необязательно[int]) – порт веб-сервера. По умолчанию
5000или порт, определенный в переменной конфигурацииSERVER_NAME, если она присутствует. -
debug (Необязательно[bool]) – если указано, включить или отключить режим отладки. См.
debug. -
load_dotenv (bool) – загрузить ближайшие файлы
.envи.flaskenvдля установки переменных среды. Также изменит рабочую директорию на директорию, содержащую первый найденный файл. -
options (Any) – параметры, передаваемые в основной сервер Werkzeug. См.
werkzeug.serving.run_simple()для получения дополнительной информации.
-
host (Необязательно[str]) – имя хоста для прослушивания. Установите его в значение
- Тип возвращаемого значения
Журнал изменений
Изменено в версии 1.0: Если установлен, будет использоваться python-dotenv для загрузки переменных среды из файлов
.envи.flaskenv.Если установлены, переменные среды
FLASK_ENVиFLASK_DEBUGпереопределятenvиdebug.Режим потоков включён по умолчанию.
Изменено в версии 0.10: Порт по умолчанию теперь выбирается из переменной
SERVER_NAME.
-
secret_key -
Если ключ секретности установлен, криптографические компоненты могут использовать его для подписи файлов cookie и других данных. Установите это значение в сложное случайное значение, когда вы хотите использовать защищённый cookie, например.
Этот атрибут также можно настроить из конфигурации с помощью ключа конфигурации
SECRET_KEY. По умолчаниюNone.
-
select_jinja_autoescape(filename) -
Возвращает
True, если автоматическая экранизация должна быть активна для данного имени шаблона. Если имя шаблона не указано, возвращаетTrue.Журнал изменений
Добавлено в версии 0.5.
-
send_file_max_age_default -
timedeltaили число секунд, используемое как значение по умолчаниюmax_ageдляsend_file(). Значение по умолчаниюNone, что говорит браузеру использовать условные запросы вместо кэширования с таймером.Настраивается с помощью ключа конфигурации
SEND_FILE_MAX_AGE_DEFAULT.Изменено в версии 2.0: По умолчанию
Noneвместо 12 часов.
-
-
send_static_file(filename) -
Функция-вью, используемая для обработки файлов из
static_folder. Маршрут для этой вью автоматически регистрируется по адресуstatic_url_path, если заданstatic_folder.Изменения
В версии 0.5.
-
session_cookie_name -
Имя куки сессии, используемой для защищённой куки.
Этот атрибут также можно настроить через конфигурацию с ключом
SESSION_COOKIE_NAME. По умолчанию'session'
-
session_interface = <flask.sessions.SecureCookieSessionInterface object> -
интерфейс сессии для использования. По умолчанию используется экземпляр
SecureCookieSessionInterface.Изменения
В версии 0.8.
-
shell_context_processor(f) -
Регистрирует функцию обработчика контекста оболочки.
Изменения
В версии 0.11.
- Параметры
-
f (Callable) –
- Тип возвращаемого значения
-
Callable
-
shell_context_processors: t.List[t.Callable[], t.Dict[str, t.Any]]] -
Список функций обработчиков контекста оболочки, которые должны быть выполнены при создании контекста оболочки.
Изменения
В версии 0.11.
-
should_ignore_error(error) -
Вызывается для определения, нужно ли игнорировать ошибку в системе разбора. Если эта функция возвращает
True, обработчики разбора не получат ошибку.Изменения
В версии 0.10.
- Параметры
-
error (Optional[BaseException]) –
- Тип возвращаемого значения
-
property static_folder: Optional[str] -
Абсолютный путь к папке со статическими файлами.
Noneесли папка не задана.
-
property static_url_path: Optional[str] -
Префикс URL, по которому будет доступна статическая страница.
Если не был настроен во время инициализации, определяется из
static_folder.
-
teardown_appcontext(f) -
Регистрирует функцию, которая будет вызываться при завершении контекста приложения. Эти функции обычно также вызываются при выходе из контекста запроса.
Пример:
ctx = app.app_context() ctx.push() ... ctx.pop()
Когда
ctx.pop()выполняется в приведённом примере, функции разбора вызываются непосредственно перед тем, как контекст приложения покидает стек активных контекстов. Это становится важным при использовании подобных конструкций в тестах.Поскольку контекст запроса обычно также управляет контекстом приложения, он также будет вызываться при выходе из контекста запроса.
Если функция разбора вызывается из-за необработанной исключительной ситуации, ей будет передан объект ошибки. Если зарегистрирован
errorhandler(), он обработает исключение, и функция разбора не получит его.Возвращаемые значения функций разбора игнорируются.
Изменения
В версии 0.9.
- Параметры
-
f (Callable[[Optional[BaseException]], flask.wrappers.Response]) –
- Тип возвращаемого значения
-
Callable[[Optional[BaseException]], flask.wrappers.Response]
-
teardown_appcontext_funcs: t.List[TeardownCallable] -
Список функций, которые вызываются при уничтожении контекста приложения. Поскольку контекст приложения также уничтожается при завершении запроса, это место для хранения кода, который отсоединяется от баз данных.
Изменения
В версии 0.9.
-
teardown_request(f) -
Регистрирует функцию, которая будет выполнена в конце каждого запроса, независимо от наличия исключительной ситуации. Эти функции выполняются при выходе из контекста запроса, даже если запрос не был выполнен.
Пример:
ctx = app.test_request_context() ctx.push() ... ctx.pop()
Когда
ctx.pop()выполняется в приведённом примере, функции разбора вызываются непосредственно перед тем, как контекст запроса покидает стек активных контекстов. Это становится важным при использовании таких конструкций в тестах.Функции разбора должны избегать создания исключительных ситуаций, поскольку они . Если они выполняют код, который может завершиться ошибкой, им нужно окружать выполнение этого кода операторами try/except и регистрировать возникшие ошибки.
Если функция разбора вызывается из-за исключительной ситуации, ей будет передан объект ошибки.
Возвращаемые значения функций разбора игнорируются.
Примечание отладки
В режиме отладки Flask не будет сразу завершать запрос при возникновении исключительной ситуации. Вместо этого он сохранит его активным, чтобы интерактивный отладчик мог к нему обратиться. Это поведение можно контролировать с помощью переменной конфигурации
PRESERVE_CONTEXT_ON_EXCEPTION.- Параметры
-
f (Callable[[Optional[BaseException]], Response]) –
- Тип возвращаемого значения
-
Callable[[Optional[BaseException]], Response]
-
teardown_request_funcs: t.Dict[AppOrBlueprintKey, t.List[TeardownCallable]] -
Структура данных функций, которые вызываются в конце каждого запроса, даже если возникает исключение, в формате
{scope: [functions]}. Ключscope— имя модуля, для которого активны функции, илиNoneдля всех запросов.Для регистрации функции используйте декоратор
teardown_request().Эта структура данных внутренняя. Не следует изменять её напрямую, и её формат может измениться в любой момент.
-
template_context_processors: t.Dict[AppOrBlueprintKey, t.List[TemplateContextProcessorCallable]] -
Структура данных функций, которые вызываются для передачи дополнительных значений контекста при рендеринге шаблонов, в формате
{scope: [functions]}. Ключscope— имя модуля, для которого активны функции, илиNoneдля всех запросов.Для регистрации функции используйте декоратор
context_processor().Эта структура данных внутренняя. Не следует изменять её напрямую, и её формат может измениться в любой момент.
-
-
template_filter(name=None) -
Декоратор, используемый для регистрации пользовательского фильтра шаблонов. Можно указать имя фильтра, в противном случае будет использовано имя функции. Пример:
@app.template_filter() def reverse(s): return s[::-1]- Параметры
-
name (Необязательно[str]) – необязательное имя фильтра, в противном случае будет использовано имя функции.
- Тип возвращаемого значения
-
Callable
-
template_folder -
Путь к папке шаблонов, относительный к
root_path, для добавления в загрузчик шаблонов.Noneесли шаблоны не должны добавляться.
-
template_global(name=None) -
Декоратор, используемый для регистрации пользовательской глобальной функции шаблона. Можно указать имя глобальной функции, в противном случае будет использовано имя функции. Пример:
@app.template_global() def double(n): return 2 * nИзменения
В версии 0.10.
- Параметры
-
name (Необязательно[str]) – необязательное имя глобальной функции, в противном случае будет использовано имя функции.
- Тип возвращаемого значения
-
Callable
-
template_test(name=None) -
Декоратор, используемый для регистрации пользовательского теста шаблона. Можно указать имя теста, в противном случае будет использовано имя функции. Пример:
@app.template_test() def is_prime(n): if n == 2: return True for i in range(2, int(math.ceil(math.sqrt(n))) + 1): if n % i == 0: return False return TrueИзменения
В версии 0.10.
- Параметры
-
name (Необязательно[str]) – необязательное имя теста, в противном случае будет использовано имя функции.
- Тип возвращаемого значения
-
Callable
-
property templates_auto_reload: bool -
Перезагружать шаблоны при их изменении. Используется
create_jinja_environment().Этот атрибут можно настроить с помощью
TEMPLATES_AUTO_RELOAD. Если не задан, он будет включён в режиме отладки.Изменения
В версии 1.0: Этот свойство было добавлено, но соответствующая настройка и поведение уже существовали.
-
test_cli_runner(**kwargs) -
Создать CLI-раннер для тестирования команд CLI. См. Тестирование команд CLI.
Возвращает экземпляр
test_cli_runner_class, по умолчаниюFlaskCliRunner. Объект приложения Flask передаётся в качестве первого аргумента.Изменения
В версии 1.0.
- Параметры
-
kwargs (Любой) –
- Тип возвращаемого значения
-
test_cli_runner_class: Optional[Type[FlaskCliRunner]] = None -
Подкласс
CliRunner, по умолчаниюFlaskCliRunner, используемыйtest_cli_runner(). Его__init__метод должен принимать объект приложения Flask в качестве первого аргумента.Изменения
В версии 1.0.
-
test_client(use_cookies=True, **kwargs) -
Создаёт тестовый клиент для этого приложения. Подробнее о тестировании см. Тестирование приложений Flask.
Обратите внимание, что если вы тестируете утверждения или исключения в коде приложения, вам необходимо установить
app.testing = Trueдля того, чтобы исключения распространялись до тестового клиента. В противном случае исключение будет обработано приложением (невидимым для тестового клиента), и единственным указанием на ошибку AssertionError или другое исключение будет код состояния 500, возвращаемый тестовому клиенту. См. атрибутtesting. Например:app.testing = True client = app.test_client()
Тестовый клиент может использоваться в блоке
withдля отложенного закрытия контекста до конца блокаwith. Это полезно, если вам нужно получить доступ к локальным переменным контекста для тестирования:with app.test_client() as c: rv = c.get('/?vodka=42') assert request.args['vodka'] == '42'Кроме того, вы можете передать необязательные ключевые аргументы, которые затем будут переданы конструктору приложения
test_client_class. Например:from flask.testing import FlaskClient class CustomClient(FlaskClient): def __init__(self, *args, **kwargs): self._authentication = kwargs.pop("authentication") super(CustomClient,self).__init__( *args, **kwargs) app.test_client_class = CustomClient client = app.test_client(authentication='Basic ....')См.
FlaskClientдля получения дополнительной информации.Изменения
Изменено в версии 0.11: Добавлен
**kwargsдля поддержки передачи дополнительных ключевых аргументов в конструкторtest_client_class.В версии 0.7: Добавлен параметр
use_cookiesи возможность переопределения используемого клиента с помощью атрибутаtest_client_class.Изменено в версии 0.4: добавлена поддержка использования блока
withдля клиента.- Параметры
-
- use_cookies (bool) –
- kwargs (Любой) –
- Тип возвращаемого значения
-
test_client_class: Optional[Type[FlaskClient]] = None -
Тестовый клиент, используемый при
test_client.Изменения
В версии 0.7.
-
-
test_request_context(*args, **kwargs) -
Создайте
RequestContextдля среды WSGI, созданной из заданных значений. Это в основном полезно во время тестирования, когда вы хотите запустить функцию, использующую данные запроса, не отправляя полный запрос.См. Контекст запроса.
Используйте блок
withдля помещения контекста, что позволитrequestуказывать на запрос для созданной среды.with test_request_context(...): generate_report()При использовании оболочки может быть проще вручную помещать и извлекать контекст, чтобы избежать отступов.
ctx = app.test_request_context(...) ctx.push() ... ctx.pop()
Принимает те же аргументы, что и
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_typeapplication/json. -
args (Любой) – другие позиционные аргументы, передаваемые в
EnvironBuilder. -
kwargs (Любой) – другие ключевые аргументы, передаваемые в
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.Changelog
Изменено в версии 1.0: Ошибки плохого запроса по умолчанию не перехватываются в режиме отладки.
Добавлена в версии 0.8.
- Параметры
-
e (Исключение) –
- Тип возвращаемого значения
-
update_template_context(context) -
Обновление контекста шаблона с помощью некоторых часто используемых переменных. Это вставляет request, session, config и g в контекст шаблона, а также все, что процессоры контекста шаблонов хотят вставить. Обратите внимание, что, начиная с Flask 0.6, исходные значения в контексте не будут перезаписаны, если процессор контекста решит вернуть значение с тем же ключом.
-
url_build_error_handlers: t.List[t.Callable[[Exception, str, dict], str]] -
Список функций, которые вызываются, когда
url_for()вызываетBuildError. Каждая зарегистрированная здесь функция вызывается сerror,endpointиvalues. Если функция возвращаетNoneили вызывает исключениеBuildError, пытается вызвать следующую функцию.Changelog
Добавлена в версии 0.9.
-
url_default_functions: t.Dict[AppOrBlueprintKey, t.List[URLDefaultCallable]] -
Структура данных функций для изменения ключевых аргументов при генерировании URL-адресов в формате
{scope: [functions]}. Ключscope— имя модуля blueprint, для которого активны функции, илиNoneдля всех запросов.Для регистрации функции используйте декоратор
url_defaults().Эта структура данных является внутренней. Ее не следует изменять напрямую, и ее формат может изменяться в любое время.
-
url_defaults(f) -
Функция обратного вызова для значений по умолчанию URL для всех функций представления приложения. Она вызывается с именем конечной точки и значениями и должна обновить переданные значения на месте.
-
url_map -
Mapдля этого экземпляра. Вы можете использовать его для изменения преобразователей маршрутизации после создания класса, но до подключения каких-либо маршрутов. Пример:from werkzeug.routing import BaseConverter class ListConverter(BaseConverter): def to_python(self, value): return value.split(',') def to_url(self, values): return ','.join(super(ListConverter, self).to_url(value) for value in values) app = Flask(__name__) app.url_map.converters['list'] = ListConverter
-
url_map_class -
Псевдоним
werkzeug.routing.Map
-
url_rule_class -
Псевдоним
werkzeug.routing.Rule
-
-
url_value_preprocessor(f) -
Зарегистрировать функцию предобработки значений URL для всех функций представлений в приложении. Эти функции будут вызваны до функций
before_request().Функция может изменять значения, полученные из сопоставленного URL, перед передачей их представлению. Например, это можно использовать для извлечения общего кода языка и размещения его в
gвместо передачи его каждому представлению.Функции передаются имя конечной точки и словарь значений. Возвращаемое значение игнорируется.
-
url_value_preprocessors: t.Dict[AppOrBlueprintKey, t.List[URLValuePreprocessorCallable]] -
Структура данных функций для вызова, чтобы изменить ключевые аргументы, передаваемые функции представления, в формате
{scope: [functions]}. Ключscope— имя схемы, для которой функции активны, илиNoneдля всех запросов.Для регистрации функции используйте декоратор
url_value_preprocessor().Эта структура данных внутренняя. Ее не следует изменять напрямую, и ее формат может быть изменён в любой момент.
-
use_x_sendfile -
Включить эту опцию, если вы хотите использовать функцию X-Sendfile. Имейте в виду, что сервер должен её поддерживать. Это влияет только на файлы, отправленные с помощью метода
send_file().Changelog
Новое в версии 0.2.
Этот атрибут также можно настроить из конфигурации с ключом конфигурации
USE_X_SENDFILE. По умолчаниюFalse.
-
view_functions: t.Dict[str, t.Callable] -
Словарь, сопоставляющий имена конечных точек функциям представлений.
Для регистрации функции представления используйте декоратор
route().Эта структура данных внутренняя. Ее не следует изменять напрямую, и ее формат может быть изменён в любой момент.
-
wsgi_app(environ, start_response) -
Фактическое приложение WSGI. Это не реализовано в
__call__(), чтобы можно было применять промежуточное ПО без потери ссылки на объект приложения. Вместо этого:app = MyMiddleware(app)
Лучше сделать так:
app.wsgi_app = MyMiddleware(app.wsgi_app)
Тогда у вас останется исходный объект приложения и вы сможете продолжать вызывать методы на нём.
Changelog
Изменено в версии 0.7: События завершения для контекстов запроса и приложения вызываются даже при возникновении необработанной ошибки. Другие события могут не вызываться в зависимости от того, когда произошла ошибка во время обработки. См. Обработчики и ошибки.
- Параметры
-
- environ (dict) – Среда WSGI.
- start_response (Callable) – Вызываемый объект, принимающий код состояния, список заголовков и контекст исключения (необязательный) для начала ответа.
- Тип возвращаемого значения
-
Любой
-
Объекты схемы
-
class flask.Blueprint(name, import_name, static_folder=None, static_url_path=None, template_folder=None, url_prefix=None, subdomain=None, url_defaults=None, root_path=None, cli_group=<object object>) -
Представляет собой blueprint — набор маршрутов и других функций, связанных с приложением, которые могут быть зарегистрированы в реальном приложении позже.
Blueprint — это объект, позволяющий определять функции приложения без предварительного указания объекта приложения. Он использует те же декораторы, что и
Flask, но откладывает необходимость приложения, записывая их для последующей регистрации.Декорирование функции с помощью blueprint создаёт отложенную функцию, которая вызывается с
BlueprintSetupStateпри регистрации blueprint в приложении.Для получения дополнительной информации см. Модульные приложения с Blueprints.
- Параметры
-
- name (str) – Имя blueprint. Будет добавлено в начало имени каждого конечной точки.
-
import_name (str) – Имя пакета blueprint, обычно
__name__. Это помогает найтиroot_pathдля blueprint. - static_folder (Необязательно[str]) – Папка со статическими файлами, которые должны обслуживаться статическим маршрутом blueprint. Путь относительный к корневому пути blueprint. Статические файлы blueprint по умолчанию отключены.
-
static_url_path (Необязательно[str]) – URL для предоставления статических файлов. По умолчанию
static_folder. Если у blueprint нетurl_prefix, статический маршрут приложения будет иметь приоритет, и статические файлы blueprint не будут доступны. - template_folder (Необязательно[str]) – Папка с шаблонами, которые следует добавить в путь поиска шаблонов приложения. Путь относительный к корневому пути blueprint. Шаблоны blueprint по умолчанию отключены. Шаблоны blueprint имеют меньший приоритет, чем шаблоны в папке templates приложения.
- url_prefix (Необязательно[str]) – Путь, который будет добавлен в начало всех URL blueprint, чтобы сделать их отличными от других маршрутов приложения.
- subdomain (Необязательно[str]) – Поддомен, на котором маршруты blueprint будут соответствовать по умолчанию.
- url_defaults (Необязательно[dict]) – Словарь значений по умолчанию, которые маршруты blueprint будут получать по умолчанию.
-
root_path (Необязательно[str]) – По умолчанию blueprint автоматически задаёт это значение на основе
import_name. В определённых ситуациях автоматическое определение может не сработать, поэтому путь можно указать вручную. - cli_group (Необязательно[str]) –
Изменения
Изменено в версии 1.1.0: Blueprints имеют группу
cliдля регистрации вложенных команд CLI. Параметрcli_groupуправляет именем группы в рамках командыflask.Добавлено в версии 0.7.
-
add_app_template_filter(f, name=None) -
Регистрация пользовательского фильтра шаблонов, доступного во всём приложении. Как
Flask.add_template_filter(), но для blueprint. Работает точно так же, как декораторapp_template_filter().
-
add_app_template_global(f, name=None) -
Регистрация пользовательской глобальной переменной шаблона, доступной во всём приложении. Как
Flask.add_template_global(), но для blueprint. Работает точно так же, как декораторapp_template_global().Изменения
Добавлено в версии 0.10.
-
add_app_template_test(f, name=None) -
Регистрация пользовательского теста шаблона, доступного во всём приложении. Как
Flask.add_template_test(), но для blueprint. Работает точно так же, как декораторapp_template_test().Изменения
Добавлено в версии 0.10.
-
add_url_rule(rule, endpoint=None, view_func=None, **options) -
Аналогично
Flask.add_url_rule(), но для blueprint. Конечная точка для функцииurl_for()дополняется именем blueprint.
-
after_app_request(f) -
Аналогично
Flask.after_request(), но для blueprint. Такая функция выполняется после каждого запроса, даже если она находится вне blueprint.
-
after_request(f) -
Зарегистрируйте функцию, которая будет выполняться после каждого запроса к этому объекту.
Функция вызывается с объектом ответа и должна возвращать объект ответа. Это позволяет функциям изменять или заменять ответ перед его отправкой.
Если функция вызывает исключение, любые оставшиеся
after_requestфункции не будут вызваны. Поэтому это не следует использовать для действий, которые должны выполняться, например, для закрытия ресурсов. Используйтеteardown_request()для этого.
-
after_request_funcs: t.Dict[AppOrBlueprintKey, t.List[AfterRequestCallable]] -
Структура данных функций, которые нужно вызывать в конце каждого запроса, в формате
{scope: [functions]}. Ключscope— имя blueprint, для которого активны функции, илиNoneдля всех запросов.Для регистрации функции используйте декоратор
after_request().Эта структура данных внутренняя. Не следует изменять ее напрямую, и ее формат может измениться в любое время.
-
app_context_processor(f) -
Подобно
Flask.context_processor(), но для blueprint. Такая функция выполняется при каждом запросе, даже если она находится вне blueprint.
-
app_errorhandler(code) -
Подобно
Flask.errorhandler(), но для blueprint. Этот обработчик используется для всех запросов, даже если они находятся вне blueprint.
-
app_template_filter(name=None) -
Зарегистрируйте пользовательский фильтр шаблонов, доступный во всей приложении. Подобно
Flask.template_filter(), но для blueprint.- Параметры
-
name (Optional[str]) – необязательное имя фильтра, в противном случае будет использовано имя функции.
- Тип возвращаемого значения
-
Callable
-
app_template_global(name=None) -
Зарегистрируйте пользовательскую глобальную переменную шаблона, доступную во всей приложении. Подобно
Flask.template_global(), но для blueprint.Changelog
Добавлено в версии 0.10.
- Параметры
-
name (Optional[str]) – необязательное имя глобальной переменной, в противном случае будет использовано имя функции.
- Тип возвращаемого значения
-
Callable
-
app_template_test(name=None) -
Зарегистрируйте пользовательский тест шаблона, доступный во всей приложении. Подобно
Flask.template_test(), но для blueprint.Changelog
Добавлено в версии 0.10.
- Параметры
-
name (Optional[str]) – необязательное имя теста, в противном случае будет использовано имя функции.
- Тип возвращаемого значения
-
Callable
-
app_url_defaults(f) -
То же, что и
url_defaults(), но для всего приложения.
-
app_url_value_preprocessor(f) -
То же, что и
url_value_preprocessor(), но для всего приложения.
-
before_app_first_request(f) -
Подобно
Flask.before_first_request(). Такая функция выполняется перед первым запросом к приложению.
-
before_app_request(f) -
Подобно
Flask.before_request(). Такая функция выполняется перед каждым запросом, даже если она находится вне blueprint.
-
-
before_request(f) -
Регистрирует функцию для выполнения перед каждым запросом.
Например, это можно использовать для открытия подключения к базе данных или для загрузки вошедшего в систему пользователя из сессии.
@app.before_request def load_user(): if "user_id" in session: g.user = db.session.get(session["user_id"])Функция будет вызвана без каких-либо аргументов. Если она возвращает значение, отличное от
None, значение обрабатывается так, как если бы это было возвращаемое значение представления, и дальнейшая обработка запроса останавливается.
-
before_request_funcs: t.Dict[AppOrBlueprintKey, t.List[BeforeRequestCallable]] -
Структура данных функций, которые вызываются в начале каждого запроса в формате
{scope: [functions]}. Ключscope— имя модуля, для которого активны функции, илиNoneдля всех запросов.Для регистрации функции используйте декоратор
before_request().Эта структура данных внутренняя. Ее не следует изменять напрямую, и ее формат может быть изменен в любое время.
-
cli -
Группа команд Click для регистрации команд командной строки для этого объекта. Команды доступны из команды
flaskпосле того, как приложение найдено, а модули зарегистрированы.
-
context_processor(f) -
Регистрирует функцию процессора контекста шаблонов.
-
delete(rule, **options) -
Сокращение для
route()сmethods=["DELETE"].Введено в версии 2.0.
- Параметры
-
- rule (str) –
- options (Any) –
- Тип возвращаемого значения
-
Callable
-
endpoint(endpoint) -
Декорирует функцию представления для регистрации ее для заданного конечной точки. Используется, если правило добавлено без
view_funcс помощьюadd_url_rule().app.add_url_rule("/ex", endpoint="example") @app.endpoint("example") def example(): ...- Параметры
-
endpoint (str) – Имя конечной точки, которое необходимо ассоциировать с функцией представления.
- Тип возвращаемого значения
-
Callable
-
error_handler_spec: t.Dict[AppOrBlueprintKey, t.Dict[t.Optional[int], t.Dict[t.Type[Exception], ErrorHandlerCallable]]] -
Структура данных зарегистрированных обработчиков ошибок в формате
{scope: {code: {class: handler}}}`. Ключscope— имя модуля, для которого активны обработчики, илиNoneдля всех запросов. Ключcode— код HTTP-статуса дляHTTPException, илиNoneдля других исключений. Внутренний словарь сопоставляет классы исключений с функциями-обработчиками.Для регистрации обработчика ошибок используйте декоратор
errorhandler().Эта структура данных внутренняя. Ее не следует изменять напрямую, и ее формат может быть изменен в любое время.
-
errorhandler(code_or_exception) -
Регистрирует функцию для обработки ошибок по коду или классу исключения.
Декоратор, используемый для регистрации функции, заданной кодом ошибки. Пример:
@app.errorhandler(404) def page_not_found(error): return 'This page does not exist', 404Также можно регистрировать обработчики для произвольных исключений:
@app.errorhandler(DatabaseError) def special_exception_handler(error): return 'Database connection failed', 500Журнал изменений
Введено в версии 0.7: Используйте
register_error_handler()вместо измененияerror_handler_specнапрямую для глобальных обработчиков ошибок.Введено в версии 0.7: Теперь можно дополнительно регистрировать пользовательские типы исключений, которые необязательно должны быть подклассом класса
HTTPException.
-
get(rule, **options) -
Сокращение для
route()сmethods=["GET"].Введено в версии 2.0.
- Параметры
-
- rule (str) –
- options (Any) –
- Тип возвращаемого значения
-
Callable
-
get_send_file_max_age(filename) -
Используется функцией
send_file()для определения значения кэшированияmax_ageдля данного пути к файлу, если оно не было передано.По умолчанию возвращает
SEND_FILE_MAX_AGE_DEFAULTиз конфигурацииcurrent_app. По умолчанию этоNone, что сообщает браузеру использовать условные запросы вместо кэша с указанным временем, что обычно предпочтительнее.Изменено в версии 2.0: Значение конфигурации по умолчанию —
Noneвместо 12 часов.Журнал изменений
Введено в версии 0.9.
-
property has_static_folder: bool -
True, еслиstatic_folderзадано.Журнал изменений
Введено в версии 0.5.
-
import_name -
Имя пакета или модуля, к которому принадлежит этот объект. Не изменяйте его после его установки конструктором.
-
property jinja_loader: Optional[jinja2.loaders.FileSystemLoader] -
Загрузчик Jinja для шаблонов этого объекта. По умолчанию это класс
jinja2.loaders.FileSystemLoaderдляtemplate_folder, если он задан.Журнал изменений
Введено в версии 0.5.
-
json_decoder: Optional[Type[json.decoder.JSONDecoder]] = None -
Локальный класс декодера JSON для модуля. Установлено в
Noneдля использования декодера приложенияjson_decoder.
-
-
json_encoder: Optional[Type[json.encoder.JSONEncoder]] = None -
Класс локального кодировщика JSON для использования в Blueprint. Установлено в
Noneдля использования кодировщика приложенияjson_encoder.
-
make_setup_state(app, options, first_registration=False) -
Создаёт экземпляр объекта
BlueprintSetupState(), который позже передаётся в функции обратного вызова регистрации. Подклассы могут переопределять этот метод для возврата подкласса состояния настройки.- Параметры
- Тип возвращаемого значения
-
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.
- Параметры
-
- rule (str) –
- options (Any) –
- Тип возвращаемого значения
-
Callable
-
post(rule, **options) -
Короткая форма для
route()сmethods=["POST"].Добавлена в версии 2.0.
- Параметры
-
- rule (str) –
- options (Any) –
- Тип возвращаемого значения
-
Callable
-
put(rule, **options) -
Короткая форма для
route()сmethods=["PUT"].Добавлена в версии 2.0.
- Параметры
-
- rule (str) –
- options (Any) –
- Тип возвращаемого значения
-
Callable
-
record(func) -
Регистрирует функцию, которая вызывается при регистрации Blueprint в приложении. Эта функция вызывается со состоянием в качестве аргумента, возвращённым методом
make_setup_state().- Параметры
-
func (Callable) –
- Тип возвращаемого значения
-
record_once(func) -
Работает как
record(), но оборачивает функцию в другую функцию, которая гарантирует, что функция вызывается только один раз. Если Blueprint регистрируется во второй раз в приложении, переданная функция не вызывается.- Параметры
-
func (Callable) –
- Тип возвращаемого значения
-
register(app, options) -
Вызывается
Flask.register_blueprint()для регистрации всех представлений и обратных вызовов, зарегистрированных в Blueprint, в приложении. СоздаётBlueprintSetupStateи вызывает каждый обратный вызовrecord()с ним.- Параметры
-
- app (Flask) – Приложение, с которым регистрируется Blueprint.
-
options (dict) – Аргументы ключевых слов, переданные из
register_blueprint(). - first_registration – Является ли это первой регистрацией Blueprint в приложении.
- Тип возвращаемого значения
-
register_blueprint(blueprint, **options) -
Регистрирует
Blueprintв этом Blueprint. Аргументы ключевых слов, переданные в этот метод, переопределят значения по умолчанию, установленные в Blueprint.Добавлена в версии 2.0.
- Параметры
-
- blueprint (flask.blueprints.Blueprint) –
- options (Any) –
- Тип возвращаемого значения
-
-
register_error_handler(code_or_exception, f) -
Функция для добавления обработчика ошибок в дополнение к декоратору
errorhandler(). Более проста в использовании без использования декораторов.Changelog
Новая в версии 0.7.
- Параметры
-
- code_or_exception (Union[Type[Исключение], int]) –
- f (Callable[[Исключение], Union[Ответ, AnyStr, Dict[str, Any], Generator[AnyStr, None, None], Tuple[Union[Ответ, AnyStr, Dict[str, Any], Generator[AnyStr, None, None]], int], Tuple[Union[Ответ, AnyStr, Dict[str, Any], Generator[AnyStr, None, None]], int, Union[Headers, Dict[str, Union[str, List[str], Tuple[str, ...]]], List[Tuple[str, Union[str, List[str], Tuple[str, ...]]]]]], WSGIApplication]]) –
- Тип возвращаемого значения
-
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установлен.Changelog
Новая в версии 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 (Callable[[Optional[BaseException]], Response]) –
- Тип возвращаемого значения
-
Callable[[Optional[BaseException]], Response]
-
teardown_request(f) -
Регистрирует функцию, которая выполняется в конце каждого запроса, независимо от того, возникла ли ошибка или нет. Эти функции выполняются при извлечении контекста запроса, даже если фактически не был выполнен запрос.
Пример:
ctx = app.test_request_context() ctx.push() ... ctx.pop()
Когда
ctx.pop()выполняется в приведенном выше примере, функции разборки вызываются непосредственно перед тем, как контекст запроса перемещается из стека активных контекстов. Это становится актуальным, если вы используете такие конструкции в тестах.Функции разборки должны избегать повышения исключений, так как они . Если они выполняют код, который может потерпеть неудачу, они должны будут обрамлять выполнение этого кода инструкциями try/except и регистрировать возникающие ошибки.
Когда функция разборки была вызвана из-за исключения, ей будет передан объект ошибки.
Значения возврата функций разборки игнорируются.
Debug Note
В режиме отладки Flask не будет сразу разбирать запрос при возникновении исключения. Вместо этого он сохранит его активным, чтобы интерактивный отладчик мог к нему обратиться. Это поведение можно контролировать с помощью переменной конфигурации
PRESERVE_CONTEXT_ON_EXCEPTION.- Параметры
-
f (Callable[[Optional[BaseException]], Response]) –
- Тип возвращаемого значения
-
Callable[[Optional[BaseException]], Response]
-
teardown_request_funcs: t.Dict[AppOrBlueprintKey, t.List[TeardownCallable]] -
Структура данных функций, которые вызываются в конце каждого запроса, даже если возникло исключение, в формате
{scope: [functions]}. Ключscope— имя схемы, для которой активны функции, илиNoneдля всех запросов.Для регистрации функции используйте декоратор
teardown_request().Эта структура данных внутренняя. Ее не следует изменять напрямую, и ее формат может измениться в любое время.
-
template_context_processors: t.Dict[AppOrBlueprintKey, t.List[TemplateContextProcessorCallable]] -
Структура данных функций, которые вызываются для передачи дополнительных значений контекста при рендеринге шаблонов, в формате
{scope: [functions]}. Ключscope— имя схемы, для которой активны функции, илиNoneдля всех запросов.Для регистрации функции используйте декоратор
context_processor().Эта структура данных внутренняя. Ее не следует изменять напрямую, и ее формат может измениться в любое время.
-
template_folder -
Путь к папке с шаблонами, относительно
root_path, для добавления в загрузчик шаблонов.Noneесли шаблоны не должны добавляться.
-
url_default_functions: t.Dict[AppOrBlueprintKey, t.List[URLDefaultCallable]] -
Структура данных функций, которые вызываются для изменения ключевых аргументов при генерации URL-адресов, в формате
{scope: [functions]}. Ключscope— имя схемы, для которой активны функции, илиNoneдля всех запросов.Для регистрации функции используйте декоратор
url_defaults().Эта структура данных внутренняя. Ее не следует изменять напрямую, и ее формат может измениться в любое время.
-
url_defaults(f) -
Функция обратного вызова для значений по умолчанию URL для всех функций представления приложения. Она вызывается с именем конечной точки и значениями и должна обновлять передаваемые значения на месте.
-
url_value_preprocessor(f) -
Регистрирует функцию предобработки значений URL для всех функций представления в приложении. Эти функции вызываются до функций
before_request().Функция может изменять значения, полученные из соответствующего URL, прежде чем они будут переданы в представление. Например, это можно использовать для извлечения общего кода языка и размещения его в
gвместо передачи его каждой функции представления.Функции передаются имя конечной точки и словарь значений. Значение возврата игнорируется.
-
url_value_preprocessors: t.Dict[AppOrBlueprintKey, t.List[URLValuePreprocessorCallable]] -
Структура данных функций, которые вызываются для изменения ключевых аргументов, передаваемых в функцию представления, в формате
{scope: [functions]}. Ключscope— имя схемы, для которой активны функции, илиNoneдля всех запросов.Для регистрации функции используйте декоратор
url_value_preprocessor().Эта структура данных внутренняя. Ее не следует изменять напрямую, и ее формат может измениться в любое время.
-
view_functions: t.Dict[str, t.Callable] -
Словарь, сопоставляющий имена конечных точек с функциями представлений.
Для регистрации функции представления используйте декоратор
route().Эта структура данных внутренняя. Ее не следует изменять напрямую, и ее формат может измениться в любое время.
-
Данные входящего запроса
-
class flask.Request(environ, populate_request=True, shallow=False) -
Объект запроса, используемый по умолчанию в Flask. Запоминает сопоставленный конечный пункт и аргументы представления.
Он и является тем, что в итоге становится
request. Если вы хотите заменить используемый объект запроса, вы можете создать подкласс этого и установитьrequest_classна свой подкласс.Объект запроса является подклассом
Requestи предоставляет все атрибуты, определённые Werkzeug, плюс несколько специфичных для Flask.- Параметры
- Тип возвращаемого значения
-
property accept_charsets: werkzeug.datastructures.CharsetAccept -
Список наборов символов, поддерживаемых этим клиентом, как объект
CharsetAccept.
-
property accept_encodings: werkzeug.datastructures.Accept -
Список кодировок, принимаемых этим клиентом. Кодировки в HTTP — это кодировки сжатия, такие как gzip. Для наборов символов см.
accept_charset.
-
property accept_languages: werkzeug.datastructures.LanguageAccept -
Список языков, принимаемых этим клиентом, как объект
LanguageAccept.
-
property accept_mimetypes: werkzeug.datastructures.MIMEAccept -
Список MIME-типов, поддерживаемых этим клиентом, как объект
MIMEAccept.
-
access_control_request_headers -
Отправляется с предварительным запросом, чтобы указать, какие заголовки будут отправлены с запросом к другому источнику. Установите
access_control_allow_headersв ответе, чтобы указать разрешённые заголовки.
-
access_control_request_method -
Отправляется с предварительным запросом, чтобы указать, какой метод будет использован для запроса к другому источнику. Установите
access_control_allow_methodsв ответе, чтобы указать разрешённые методы.
-
property access_route: List[str] -
Если существует заголовок forwarded, это список всех адресов IP от клиента до последнего прокси-сервера.
-
classmethod application(f) -
Декорирует функцию как обработчик, который принимает запрос в качестве последнего аргумента. Это работает как декор
responder(), но функция получает объект запроса в качестве последнего аргумента, а объект запроса закрывается автоматически:@Request.application def my_wsgi_app(request): return Response('Hello World!')Начиная с Werkzeug 0.14, HTTP-исключения автоматически перехватываются и преобразуются в ответы, вместо того, чтобы вызывать ошибку.
- Параметры
-
f (Callable[[Request], WSGIApplication]) – вызываемый объект WSGI, подлежащий декорированию
- Возвращаемое значение
-
новый вызываемый объект WSGI
- Тип возвращаемого значения
-
WSGIApplication
-
property args: MultiDict[str, str] -
Обработанные параметры URL (часть URL после вопросительного знака).
По умолчанию из этой функции возвращается
ImmutableMultiDict. Это можно изменить, установивparameter_storage_classна другой тип. Это может потребоваться, если порядок данных формы важен.
-
property authorization: Optional[werkzeug.datastructures.Authorization] -
Объект
Authorizationв обработанном виде.
-
property base_url: str -
Как
url, но без строки запроса.
-
property blueprint: Optional[str] -
Имя текущего модуля.
-
property cache_control: werkzeug.datastructures.RequestCacheControl -
Объект
RequestCacheControlдля заголовков кэширования входящего запроса.
-
close() -
Закрывает связанные ресурсы этого объекта запроса. Закрывает все дескрипторы файлов явно. Вы также можете использовать объект запроса в блоке with, который автоматически его закроет.
Changelog
Новое в версии 0.9.
- Тип возвращаемого значения
-
content_encoding -
Поле заголовка сущности Content-Encoding используется как модификатор типа данных. Если оно присутствует, его значение указывает, какие дополнительные кодировки содержимого были применены к телу сущности, и, следовательно, какие механизмы декодирования должны быть применены для получения типа данных, указанного в заголовке Content-Type.
Changelog
Новое в версии 0.9.
-
property content_length: Optional[int] -
Поле заголовка сущности Content-Length указывает размер тела сущности в байтах или, в случае метода HEAD, размер тела сущности, который был бы отправлен, если бы запрос был GET.
-
content_md5 -
Поле заголовка сущности Content-MD5, как определено в RFC 1864, представляет собой MD5-хеш тела сущности для проверки целостности сообщения сущности (MIC). (Примечание: MIC предназначен для обнаружения случайных изменений тела сущности во время передачи, но не является доказательством защиты от злонамеренных атак.)
Changelog
Новое в версии 0.9.
-
content_type -
Поле заголовка сущности Content-Type указывает тип данных тела сущности, отправленного получателю, или, в случае метода HEAD, тип данных, который был бы отправлен, если бы запрос был GET.
-
property cookies: ImmutableMultiDict[str, str] -
dictсо всем содержимым cookie, переданных с запросом.
-
property data: bytes -
Содержит входящие данные запроса в виде строки в случае, если они были переданы с типом данных, который Werkzeug не обрабатывает.
-
date -
Поле заголовка Date представляет дату и время, в которые было отправлено сообщение, имея те же семантику, что и orig-date в RFC 822.
Изменено в версии 2.0: Объект datetime учитывает часовой пояс.
-
dict_storage_class -
псевдоним для
werkzeug.datastructures.ImmutableMultiDict
-
property endpoint: Optional[str] -
Конечный пункт, сопоставленный с запросом. Это в сочетании с
view_argsможет быть использовано для восстановления того же или изменённого URL. Если при сопоставлении произошла ошибка, это будетNone.
-
environ: WSGIEnvironment -
WSGI-среда, содержащая HTTP-заголовки и информацию от WSGI-сервера.
-
property files: ImmutableMultiDict[str, FileStorage] -
MultiDictобъект, содержащий все загруженные файлы. Каждый ключ вfiles— имя из<input type="file" name="">. Каждое значение вfiles— объект WerkzeugFileStorage.По сути, он ведет себя как стандартный объект файла, известный вам из Python, с той разницей, что у него также есть функция
save(), которая может сохранить файл на файловой системе.Обратите внимание, что
filesбудет содержать данные только в том случае, если метод запроса был POST, PUT или PATCH, и<form>, отправленный в запрос, содержалenctype="multipart/form-data". В противном случае он будет пустым.Для получения дополнительной информации об используемой структуре данных см. документацию
MultiDict/FileStorage.
-
property form: ImmutableMultiDict[str, str] -
Параметры формы. По умолчанию из этой функции возвращается
ImmutableMultiDict. Это можно изменить, установивparameter_storage_classна другой тип. Это может потребоваться, если порядок данных формы важен.Пожалуйста, имейте в виду, что загрузки файлов не попадут сюда, а вместо этого в атрибут
files.Changelog
Изменено в версии 0.9: До версии Werkzeug 0.9 это содержало только данные формы для запросов POST и PUT.
-
form_data_parser_class -
Псевдоним для
werkzeug.formparser.FormDataParser.
-
classmethod from_values(*args, **kwargs) -
Создать новый объект запроса на основе предоставленных значений. Если указан environ, пропущенные значения заполняются из него. Этот метод полезен для небольших скриптов, когда вам нужно смоделировать запрос из URL. Не используйте этот метод для тестирования, существует полный функциональный объект клиента (
Client), который позволяет создавать multipart запросы, поддерживает куки и т.д.Он принимает те же параметры, что и
EnvironBuilder.Changelog
Изменено в версии 0.5: Этот метод теперь принимает те же аргументы, что и
EnvironBuilder. Из-за этого параметрenvironтеперь называетсяenviron_overrides.- Возвращает
-
объект запроса
- Параметры
-
- args (Any) –
- kwargs (Any) –
- Тип возвращаемого значения
-
property full_path: str -
Запрошенный путь, включая строку запроса.
-
get_data(cache=True, as_text=False, parse_form_data=False) -
Это считывает буферизованные входные данные от клиента в один объект байтов. По умолчанию это кэшируется, но это поведение можно изменить, установив
cacheвFalse.Как правило, не рекомендуется вызывать этот метод, не проверив сначала длину содержимого, так как клиент может отправить десятки мегабайтов или более, чтобы вызвать проблемы с памятью на сервере.
Обратите внимание, что если данные формы уже были обработаны, этот метод ничего не вернет, так как обработка данных формы не кэширует данные, как этот метод. Чтобы неявно вызвать функцию обработки данных формы, установите
parse_form_dataвTrue. Когда это сделано, значение, возвращаемое этим методом, будет пустой строкой, если обработчик формы обрабатывает данные. Как правило, это не нужно, так как если все данные кэшируются (что является по умолчанию), обработчик форм будет использовать кэшированные данные для обработки данных формы. Пожалуйста, в любом случае будьте внимательны и проверьте сначала длину содержимого, прежде чем вызывать этот метод, чтобы избежать исчерпания памяти сервера.Если
as_textустановлено вTrue, возвращаемое значение будет декодированной строкой.Changelog
Добавлена в версии 0.9.
-
get_json(force=False, silent=False, cache=True) -
Обработать
dataкак JSON.Если тип MIME не указывает JSON (application/json, см.
is_json()), это возвращаетNone.Если обработка завершается неудачей, вызывается
on_json_loading_failed(), и его возвращаемое значение используется как возвращаемое значение.
-
headers -
Заголовки, полученные вместе с запросом.
-
property host: str -
Имя хоста, к которому был отправлен запрос, включая порт, если он нестандартный. Проверено с помощью
trusted_hosts.
-
property host_url: str -
Схема и хост URL запроса.
-
property if_match: werkzeug.datastructures.ETags -
Объект, содержащий все теги в заголовке
If-Match.- Тип возвращаемого значения
-
property if_modified_since: Optional[datetime.datetime] -
Обработанный заголовок
If-Modified-Sinceв качестве объекта datetime.Изменено в версии 2.0: Объект datetime является часовым.
-
property if_none_match: werkzeug.datastructures.ETags -
Объект, содержащий все теги в заголовке
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()с аргументами по умолчанию.
-
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] -
Параметры mimetype в виде словаря. Например, если тип содержимого
text/html; charset=utf-8, то параметры будут{'charset': 'utf-8'}.
-
on_json_loading_failed(e) -
Вызывается, если происходит ошибка при разборе
get_json()и она не скрывается. Если этот метод возвращает значение, это значение используется в качестве значения возвратаget_json(). По умолчанию генерируется исключениеBadRequest.- Параметры
-
e (Исключение) –
- Тип возвращаемого значения
-
NoReturn
-
origin -
Хост, откуда исходит запрос. Установите
access_control_allow_originна ответе, чтобы указать разрешенные источники.
-
parameter_storage_class
-
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) ресурса, из которого был получен запрашиваемый URI ( «referrer», хотя в названии поля заголовка допущена ошибка).
-
remote_addr -
Адрес клиента, отправившего запрос.
-
remote_user -
Если сервер поддерживает аутентификацию пользователя и сценарий защищен, в этом атрибуте содержится имя пользователя, под которым пользователь прошел аутентификацию.
-
root_path -
Префикс, под которым смонтировано приложение, без конечного слеша.
pathследует за этим.
-
property root_url: str -
Схема URL, хост и корневой путь запроса. Это корень, с которого обращаются к приложению.
-
routing_exception: Optional[Exception] = None -
Если сопоставление URL не удалось, это исключение будет сгенерировано / было сгенерировано в рамках обработки запроса. Обычно это исключение
NotFoundили что-то подобное.
-
scheme -
Схема URL используемого протокола запроса, например
httpsилиwss.
-
-
property script_root: str -
Псевдоним для
self.root_path.environ["SCRIPT_ROOT"]без заключительного слэша.
-
server -
Адрес сервера.
(host, port),(path, None)для сокетов Unix илиNoneв случае, если не известно.
-
shallow: bool -
Устанавливается при создании объекта запроса. Если
True, чтение из тела запроса вызоветRuntimeException. Полезно для предотвращения изменения потока из промежуточного программного обеспечения.
-
property stream: BinaryIO -
Если входные данные формы не были закодированы с известным типом MIME, данные хранятся в этом потоке без изменений для обработки. В большинстве случаев лучше использовать
data, который предоставит эти данные в виде строки. Поток возвращает данные только один раз.В отличие от
input_stream, этот поток должным образом защищён от случайного чтения за пределы длины входных данных. Werkzeug всегда обращается к этому потоку для чтения данных, что позволяет обернуть этот объект потоком, который выполняет фильтрацию.Changelog
Изменено в версии 0.9: Этот поток теперь всегда доступен, но может быть обработан парсером формы позже. Ранее поток устанавливался только в случае отсутствия обработки.
-
property url: str -
Полный URL запроса со схемой, хостом, корневым путём, путём и строкой запроса.
-
property url_charset: str -
Кодировка символов, которая предполагается для URL. По умолчанию соответствует значению
charset.Changelog
Добавлена в версии 0.6.
-
property url_root: str -
Псевдоним для
root_url. URL со схемой, хостом и корневым путём. Например,https://example.com/app/.
-
url_rule: Optional[Rule] = None -
Внутреннее правило URL, которое соответствовало запросу. Это может быть полезно для проверки разрешенных методов для URL из обработчика до/после (
request.url_rule.methods) и т. д. Хотя, если метод запроса был недопустимым для правила URL, допустимый список доступен вrouting_exception.valid_methodsвместо этого (атрибут исключения WerkzeugMethodNotAllowed), так как запрос никогда не связывался внутренне.Changelog
Добавлена в версии 0.6.
-
property user_agent: werkzeug.user_agent.UserAgent -
Имя пользователя. Используйте
user_agent.stringдля получения значения заголовка. Установитеuser_agent_classна подклассUserAgent, чтобы обеспечить обработку других свойств или других расширенных данных.Изменено в версии 2.0: Встроенный парсер устарел и будет удален в Werkzeug 2.1. Должен быть установлен подкласс
UserAgentдля обработки данных из строки.
-
user_agent_class -
Псевдоним для
werkzeug.useragents._UserAgent
-
property values: CombinedMultiDict[str, str] -
werkzeug.datastructures.CombinedMultiDict, объединяющийargsиform.Для запросов GET присутствуют только
args, а неform.Изменено в версии 2.0: Для запросов GET присутствуют только
args, а неform.
-
view_args: Optional[Dict[str, Any]] = None -
Словарь аргументов представления, которые соответствовали запросу. Если при сопоставлении произошла ошибка, это будет
None.
-
property want_form_data_parsed: bool -
Trueесли метод запроса передаёт содержимое. По умолчанию это истинно, если передаётсяContent-Type.Changelog
Добавлена в версии 0.8.
-
-
flask.request -
Для доступа к данным входящего запроса можно использовать глобальный объект
request. Flask парсит данные входящего запроса и предоставляет доступ к ним через этот глобальный объект. Внутренне Flask гарантирует, что вы всегда получаете правильные данные для активной нити, если вы находитесь в многопоточной среде.Это прокси. Подробнее см. Примечания по прокси.
Объект запроса является экземпляром
Request.
Объекты ответа
-
class flask.Response(response=None, status=None, headers=None, mimetype=None, content_type=None, direct_passthrough=False) -
Объект ответа, используемый по умолчанию в Flask. Работает как объект ответа из Werkzeug, но по умолчанию имеет MIME-тип HTML. Часто вам не нужно создавать этот объект самостоятельно, так как
make_response()позаботится об этом за вас.Если вы хотите заменить используемый объект ответа, вы можете создать подкласс и установить
response_classна ваш подкласс.Изменения
Изменено в версии 1.0: Поддержка JSON добавлена в ответ, как и в запросе. Это полезно при тестировании для получения данных ответа тестового клиента в формате JSON.
Изменено в версии 1.0: Добавлен
max_cookie_size.- Параметры
-
- response (Union[Iterable[str], Iterable[bytes]]) –
- status (Optional[Union[int, str, http.HTTPStatus]]) –
- headers (werkzeug.datastructures.Headers) –
- mimetype (Optional[str]) –
- content_type (Optional[str]) –
- direct_passthrough (bool) –
- Тип возвращаемого значения
-
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 перечисляет набор методов, поддерживаемых ресурсом, идентифицируемым Request-URI. Цель этого поля — строго информировать получателя о допустимых методах, связанных с ресурсом. Поле заголовка Allow ОБОЯЗАТЕЛЬНО должно присутствовать в ответе 405 (Метод не разрешен).
-
property cache_control: werkzeug.datastructures.ResponseCacheControl -
Поле общего заголовка Cache-Control используется для указания директив, которые ОБЯЗАТЕЛЬНО должны соблюдаться всеми механизмами кэширования вдоль цепочки запроса/ответа.
-
calculate_content_length() -
Возвращает длину содержимого, если она доступна, или
Noneв противном случае.- Тип возвращаемого значения
-
Optional[int]
-
call_on_close(func) -
Добавляет функцию в внутренний список функций, которые должны быть вызваны при закрытии ответа. Начиная с версии 0.7, эта функция также возвращает переданную функцию, что позволяет использовать ее в качестве декоратора.
Изменения
Впервые добавлено в версии 0.6.
- Параметры
-
func (Callable[[], Any]) –
- Тип возвращаемого значения
-
Callable[[], Any]
-
close() -
Закрывает обернутый ответ, если это возможно. Также можно использовать объект в операторе with, что автоматически закроет его.
Изменения
Впервые добавлено в версии 0.9: Теперь можно использовать в операторе with.
- Тип возвращаемого значения
-
content_encoding -
Поле заголовка сущности Content-Encoding используется как модификатор MIME-типа. При его наличии значение указывает, какие дополнительные кодировки содержимого были применены к телу сущности, и, следовательно, какие механизмы декодирования необходимо применить для получения MIME-типа, указанного в поле заголовка Content-Type.
-
property content_language: werkzeug.datastructures.HeaderSet -
Поле заголовка сущности Content-Language описывает естественный язык(и) целевой аудитории для включенной сущности. Обратите внимание, что это может не эквивалентно всем языкам, используемым в теле сущности.
-
content_length -
Поле заголовка сущности Content-Length указывает размер тела сущности в десятичном числе октетов, отправленных получателю или, в случае метода HEAD, размер тела сущности, который был бы отправлен, если бы запрос был GET.
-
content_location -
Поле заголовка сущности Content-Location МОЖЕТ использоваться для предоставления местоположения ресурса для сущности, включенной в сообщение, когда эта сущность доступна из местоположения, отличного от URI запрашиваемого ресурса.
-
content_md5 -
Поле заголовка сущности Content-MD5, как определено в RFC 1864, представляет собой MD5-хеш тела сущности для обеспечения проверки целостности сообщения (MIC) тела сущности от начала до конца. (Примечание: MIC полезен для обнаружения случайного изменения тела сущности во время передачи, но не является доказательством устойчивости к злонамеренным атакам.)
-
property content_range: werkzeug.datastructures.ContentRange -
Заголовок
Content-Rangeв виде объектаContentRange. Доступен даже если заголовок не задан.Changelog
Добавлен в версии 0.7.
-
content_security_policy -
Заголовок Content-Security-Policy добавляет дополнительный уровень безопасности для обнаружения и смягчения определенных типов атак.
-
content_security_policy_report_only -
Заголовок Content-Security-Policy-Report-Only добавляет политику csp, которая не применяется, но отчитывается, помогая обнаружить определенные типы атак.
-
content_type -
Поле заголовка сущности Content-Type указывает тип носителя тела сущности, отправленного получателю, или, в случае метода HEAD, тип носителя, который был бы отправлен, если бы запрос был GET.
-
cross_origin_embedder_policy -
Предотвращает загрузку документа любых ресурсов из другого источника, которые явно не предоставляют документу разрешение. Значения должны быть членом перечисления
werkzeug.http.COEP.
-
cross_origin_opener_policy -
Позволяет управлять совместным доступом к группе контекста просмотра с документами из других источников. Значения должны быть членом перечисления
werkzeug.http.COOP.
-
property data: Union[bytes, str] -
Дескриптор, который вызывает
get_data()иset_data().
-
date -
Поле заголовка Date обозначает дату и время, в которые было создано сообщение, имея те же семантические значения, что и orig-date в RFC 822.
Изменено в версии 2.0: Объект datetime учитывает часовой пояс.
-
delete_cookie(key, path='/', domain=None, secure=False, httponly=False, samesite=None) -
Удаляет cookie. Не выдает ошибок, если ключ не существует.
- Параметры
-
- ключ (str) – ключ (имя) cookie для удаления.
- путь (str) – если cookie ограничивался путем, путь необходимо указать здесь.
- домен (Необязательно[str]) – если cookie ограничивался доменом, необходимо указать этот домен.
-
безопасный (bool) – Если
True, cookie будет доступен только через HTTPS. - только_для_http (bool) – Запрещает доступ JavaScript к cookie.
- samesite (Необязательно[str]) – Ограничивает область действия cookie только запросами «same-site».
- Тип возвращаемого значения
-
direct_passthrough -
Передает тело ответа напрямую как WSGI итератор. Это можно использовать, когда тело — двоичный файл или другой итератор байтов, чтобы пропустить некоторые ненужные проверки. Используйте
send_file()вместо ручного задания этого параметра.
-
expires -
Поле заголовка Expires указывает дату/время, после которого ответ считается устаревшим. Кэшированный элемент данных, устаревший после определенного времени, обычно не возвращается кэшем.
Изменено в версии 2.0: Объект datetime учитывает часовой пояс.
-
classmethod force_type(response, environ=None) -
Принудительно указывает, что WSGI-ответ — это объект ответа текущего типа. Werkzeug будет использовать
Responseво многих ситуациях, таких как исключения. Если вы вызоветеget_response()на исключении, вы получите обычный объектResponse, даже если вы используете пользовательский подкласс.Этот метод может принудительно задавать тип ответа, а также преобразовывать произвольные вызываемые WSGI в объекты ответов, если предоставлен environ:
# convert a Werkzeug response object into an instance of the # MyResponseClass subclass. response = MyResponseClass.force_type(response) # convert any WSGI application into a response object response = MyResponseClass.force_type(response, environ)
Это особенно полезно, если вы хотите обработать ответы в основном диспетчере и использовать функциональность, предоставляемую вашим подклассом.
Помните, что это может изменить объекты ответов на месте, если это возможно!
-
freeze(no_etag=None) -
Подготавливает объект ответа для сериализации. Выполняет следующие действия:
- Буферизует ответ в список, игнорируя
implicity_sequence_conversionиdirect_passthrough. - Устанавливает заголовок
Content-Length. - Генерирует заголовок
ETag, если он ещё не установлен.
Изменено в версии 2.0: Добавляется заголовок
ETag, параметрno_etagустарел и будет удален в Werkzeug 2.1.Changelog
Изменено в версии 0.6: Устанавливается заголовок
Content-Length. - Буферизует ответ в список, игнорируя
-
classmethod from_app(app, environ, buffered=False) -
Создает новый объект ответа из выходных данных приложения. Лучше всего работает, если вы передаете приложение, которое всегда возвращает генератор. Иногда приложения могут использовать вызываемый
write(), возвращаемый функциейstart_response. Это пытается автоматически разрешить такие граничные случаи. Но если вы не получаете ожидаемого результата, нужно установитьbufferedвTrue, чтобы принудительно включить буферизацию.
-
get_app_iter(environ) -
Возвращает итератор приложения для заданного environ. В зависимости от метода запроса и текущего кода состояния возвращаемое значение может быть пустым ответом, а не тем, которое извлекается из ответа.
Если метод запроса
HEADили код состояния находится в диапазоне, где спецификация HTTP требует пустого ответа, возвращается пустой итератор.Changelog
Добавлен в версии 0.6.
- Параметры
-
environ (WSGIEnvironment) – WSGI-среда запроса.
- Возвращает
-
итератор ответа.
- Тип возвращаемого значения
-
Iterable[bytes]
-
-
get_data(as_text=False) -
Строковое представление тела ответа. При каждом вызове этого свойства итерируемый объект ответа кодируется и сжимается. Это может привести к нежелательному поведению при работе с большими данными.
Это поведение можно отключить, установив
implicit_sequence_conversionвFalse.Если
as_textустановлено вTrue, возвращаемое значение будет декодированной строкой.Changelog
Добавлено в версии 0.9.
-
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 среды. Также длина содержимого автоматически устанавливается в ноль для определенных кодов состояния.
Changelog
Изменено в версии 0.6: Ранее функция называлась
fix_headersи изменяла объект ответа на месте. Также начиная с 0.6, IRIs в заголовках location и content-location обрабатываются должным образом.Также начиная с 0.6, Werkzeug попытается установить длину содержимого, если сможет её определить самостоятельно. Это происходит, если все строки в итерируемом объекте ответа уже закодированы, и итерируемый объект буферизован.
- Параметры
-
environ (WSGIEnvironment) – среда WSGI запроса.
- Возвращает
-
возвращает новый объект
Headers. - Тип возвращаемого значения
-
get_wsgi_response(environ) -
Возвращает конечный WSGI ответ как кортеж. Первый элемент кортежа — итератор приложения, второй — код состояния, а третий — список заголовков. Возвращаемый ответ создаётся специально для данной среды. Например, если метод запроса в среде WSGI равен
'HEAD', ответ будет пустым, и будут присутствовать только заголовки и код состояния.Changelog
Добавлено в версии 0.6.
-
property is_json: bool -
Проверка, указывает ли MIME-тип данные JSON, либо application/json, либо application/*+json.
-
property is_sequence: bool -
Если итератор буферизован, это свойство будет
True. Объект ответа будет считать итератор буферизованным, если атрибут response является списком или кортежем.Changelog
Добавлено в версии 0.6.
-
property is_streamed: bool -
Если ответ передаётся по потокам (ответ не является итерируемым объектом с информацией о длине), это свойство равно
True. В этом случае передача по потокам означает, что нет информации о количестве итераций. Обычно этоTrueесли в объект ответа передаётся генератор.Это полезно для проверки перед применением некоторого вида пост-фильтрации, которая не должна выполняться для потоковых ответов.
-
iter_encoded() -
Итерация по закодированному ответу с кодировкой ответа. Если объект ответа вызывается как WSGI-приложение, возвращаемое значение этого метода используется как итератор приложения, если не был активирован
direct_passthrough.- Тип возвращаемого значения
-
Iterator[bytes]
-
property json: Optional[Any] -
Распарсированные данные JSON, если
mimetypeуказывает на JSON (application/json, см.is_json()).Вызывает
get_json()с аргументами по умолчанию.
-
last_modified -
Поле заголовка сущности Last-Modified указывает дату и время, в которые исходный сервер считает, что вариативная сущность была в последний раз изменена.
Изменено в версии 2.0: Объект datetime является часово-значимым.
-
location -
Поле заголовка ответа Location используется для перенаправления получателя в местоположение, отличное от Request-URI, для завершения запроса или определения нового ресурса.
-
-
make_conditional(request_or_environ, accept_ranges=False, complete_length=None) -
Устанавливает условность ответа относительно запроса. Этот метод лучше всего работает, если для ответа уже был определен тег. Метод
add_etagможет быть использован для этого. Если вызывается без тега, устанавливается только заголовок даты.Не делает ничего, если метод запроса в запросе или среде окружения — не GET или HEAD.
Для оптимальной производительности при обработке запросов с диапазоном рекомендуется, чтобы ваш объект данных ответа реализовывал методы
seekable,seekиtell, как описано вio.IOBase. Объекты, возвращаемыеwrap_file(), автоматически реализуют эти методы.Не удаляет тело ответа, поскольку функция
__call__()автоматически делает это за нас.Возвращает self, позволяя вам выполнить
return resp.make_conditional(req), но изменяет объект на месте.- Параметры
-
- request_or_environ (WSGIEnvironment) – объект запроса или среда WSGI, используемые для установления условности ответа.
-
accept_ranges (Union[bool, str]) – Этот параметр определяет значение заголовка
Accept-Ranges. ЕслиFalse(по умолчанию), заголовок не устанавливается. ЕслиTrue, он будет установлен в значение"bytes". ЕслиNone, он будет установлен в значение"none". Если это строка, будет использовано это значение. -
complete_length (Optional[int]) – Будет использоваться только в корректных запросах с диапазоном. Он установит значение полной длины
Content-Rangeи вычислит фактическое значениеContent-Length. Этот параметр обязателен для успешного выполнения запросов с диапазоном.
- Возможные исключения
-
RequestedRangeNotSatisfiable, если заголовокRangeне смог быть обработан или удовлетворён. - Тип возвращаемого значения
Изменено в версии 2.0: Обработка диапазонов пропускается, если длина равна 0, вместо повышения ошибки 416 Range Not Satisfiable.
-
make_sequence() -
Преобразует итератор ответа в список. По умолчанию это происходит автоматически, если необходимо. Если
implicit_sequence_conversionотключен, этот метод не вызывается автоматически, и некоторые свойства могут вызывать исключения. Это также кодирует все элементы.Changelog
Добавлен в версии 0.6.
- Тип возвращаемого значения
-
property max_cookie_size: int -
Только для чтения представление конфигурационного ключа
MAX_COOKIE_SIZE.См.
max_cookie_sizeв документации Werkzeug.
-
property mimetype: Optional[str] -
Тип MIME (тип содержимого без кодировки и т.д.).
-
property mimetype_params: Dict[str, str] -
Параметры типа MIME в виде словаря. Например, если тип содержимого
text/html; charset=utf-8, параметры будут{'charset': 'utf-8'}.Changelog
Добавлен в версии 0.5.
-
property retry_after: Optional[datetime.datetime] -
Поле заголовка ответа Retry-After может быть использовано с ответом 503 (Сервис недоступен) для указания того, как долго сервис, вероятно, будет недоступен для клиента, делающего запрос.
Время в секундах до истечения срока действия или дата.
Изменено в версии 2.0: Объект datetime имеет часовой пояс.
-
set_cookie(key, value='', max_age=None, expires=None, path='/', domain=None, secure=False, httponly=False, samesite=None) -
Устанавливает cookie.
Если размер заголовка cookie превышает
max_cookie_size, генерируется предупреждение, но заголовок всё равно устанавливается.- Параметры
-
- key (str) – ключ (имя) устанавливаемого cookie.
- value (str) – значение cookie.
-
max_age (Optional[Union[datetime.timedelta, int]]) – должно быть количеством секунд, или
None(по умолчанию), если cookie должен действовать только в течение сессии браузера клиента. -
expires (Optional[Union[str, datetime.datetime, int, float]]) – должен быть объектом
datetimeили временной меткой Unix. - path (Optional[str]) – ограничивает cookie заданным путем, по умолчанию он охватывает весь домен.
-
domain (Optional[str]) – если вы хотите установить cookie для другого домена. Например,
domain=".example.com"установит cookie, доступный для доменаwww.example.com,foo.example.comи т.д. Иначе cookie будет доступен только для домена, который его установил. -
secure (bool) – Если
True, cookie будет доступен только через HTTPS. - httponly (bool) – Запрещает доступ JavaScript к cookie.
- samesite (Optional[str]) – Ограничивает область действия cookie, чтобы он прикреплялся только к запросам «того же сайта».
- Тип возвращаемого значения
-
set_data(value) -
Устанавливает новую строку как ответ. Значение должно быть строкой или байтами. Если устанавливается строка, она кодируется в кодировке ответа (по умолчанию utf-8).
Changelog
Добавлен в версии 0.9.
-
set_etag(etag, weak=False) -
Установить тег и переопределить предыдущий, если он был.
-
property status: str -
Код HTTP-статуса в виде строки.
-
property status_code: int -
Код HTTP-статуса в виде числа.
-
-
property stream: werkzeug.wrappers.response.ResponseStream -
Итерируемый объект ответа как поток только для записи.
-
property vary: werkzeug.datastructures.HeaderSet -
Значение поля Vary указывает набор полей заголовков запроса, которые полностью определяют, может ли кеш использовать ответ для ответа на последующий запрос без повторной валидации, пока ответ свеж.
-
property www_authenticate: werkzeug.datastructures.WWWAuthenticate -
Заголовок
WWW-Authenticateв обработанном виде.
-
Сессии
Если вы установили Flask.secret_key (или настроите его из SECRET_KEY), вы можете использовать сессии в приложениях Flask. Сессия позволяет запоминать информацию от одного запроса к другому. Flask делает это с помощью подписанного cookie. Пользователь может просмотреть содержимое сессии, но не может его изменить, если не знает секретный ключ, поэтому убедитесь, что он сложный и не поддаётся угадыванию.
Для доступа к текущей сессии можно использовать объект session:
-
class flask.session -
Объект сессии работает практически как обычный словарь, с той разницей, что он отслеживает изменения.
Это прокси. Смотрите Примечания по прокси для получения дополнительной информации.
Следующие атрибуты представляют интерес:
-
new -
Trueесли сессия новая,Falseв противном случае.
-
modified -
Trueесли объект сессии обнаружил изменение. Обратите внимание, что изменения в изменяемых структурах не подхватываются автоматически; в такой ситуации необходимо явным образом установить атрибут вTrueсамостоятельно. Вот пример:# this change is not picked up because a mutable object (here # a list) is changed. session['objects'].append(42) # so mark it as modified yourself session.modified = True
-
permanent -
Если установлено в
True, сессия действует в течениеpermanent_session_lifetimeсекунд. По умолчанию — 31 день. Если установлено вFalse(что является значением по умолчанию), сессия будет удалена при закрытии браузера пользователем.
-
Интерфейс сессии
Изменения
Новая функция версии 0.8.
Интерфейс сессии предоставляет простой способ заменить реализацию сессии, используемую Flask.
-
class flask.sessions.SessionInterface -
Базовый интерфейс, который необходимо реализовать для замены стандартного интерфейса сессий, использующего реализацию securecookie от werkzeug. Единственными методами, которые необходимо реализовать, являются
open_session()иsave_session(). Остальные методы имеют удобные значения по умолчанию, которые не нужно изменять.Объект сессии, возвращаемый методом
open_session(), должен предоставлять интерфейс типа словаря, а также свойства и методы изSessionMixin. Рекомендуется просто наследовать от словаря dict и добавить этот миксин:class Session(dict, SessionMixin): passЕсли метод
open_session()возвращаетNone, Flask вызоветmake_null_session()для создания сессии-замены, если поддержка сессий не может быть загружена из-за невыполнения каких-либо требований. По умолчанию созданный классNullSessionбудет жаловаться на то, что секретный ключ не задан.Чтобы заменить интерфейс сессий в приложении, достаточно присвоить значение
flask.Flask.session_interface:app = Flask(__name__) app.session_interface = MySessionInterface()
Журнал изменений
Введено в версии 0.8.
-
get_cookie_domain(app) -
Возвращает домен, который должен быть установлен для куки сессии.
Использует
SESSION_COOKIE_DOMAIN, если он настроен, иначе возвращает домен, определённый на основеSERVER_NAME.После определения (или если он вообще не задан),
SESSION_COOKIE_DOMAINобновляется, чтобы избежать повторного выполнения логики.
-
get_cookie_httponly(app) -
Возвращает True, если куки сессии должна быть httponly. В данный момент просто возвращает значение конфигурационной переменной
SESSION_COOKIE_HTTPONLY.
-
get_cookie_name(app) -
Возвращает имя куки сессии.
Использует
app.session_cookie_name, которое установлено в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, если куки должна быть защищённой. В данный момент возвращает значение настройки
SESSION_COOKIE_SECURE.
-
get_expiration_time(app, session) -
Вспомогательный метод, возвращающий дату истечения срока действия сессии или
None, если сессия связана с сессией браузера. Реализация по умолчанию возвращает текущее время + время жизни постоянной сессии, настроенной в приложении.- Параметры
-
- app (Flask) –
- session (flask.sessions.SessionMixin) –
- Тип возвращаемого значения
-
Optional[datetime.datetime]
-
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) -
Этот метод должен быть реализован и должен возвращать
Noneв случае, если загрузка не удалась из-за ошибки конфигурации, или экземпляр объекта сессии, который реализует интерфейс типа словаря + методы и атрибуты вSessionMixin.- Параметры
- Тип возвращаемого значения
-
Optional[flask.sessions.SessionMixin]
-
pickle_based = False -
Флаг, указывающий, основан ли интерфейс сессии на пиклировании. Это может быть использовано расширениями Flask для принятия решения о том, как обращаться с объектом сессии.
Журнал изменений
Новая версия с 0.10.
-
save_session(app, session, response) -
Вызывается для фактических сессий, возвращаемых
open_session()в конце запроса. Это всё ещё вызывается в контексте запроса, поэтому, если вам абсолютно необходимо получить доступ к запросу, вы можете это сделать.- Параметры
-
- app (Flask) –
- session (flask.sessions.SessionMixin) –
- response (Response) –
- Тип возвращаемого значения
-
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() -
Функция хеширования для подписи. По умолчанию sha1.
-
key_derivation = 'hmac' -
Название поддерживаемого itsdangerous метода вывода ключа. По умолчанию hmac.
-
open_session(app, request) -
Этот метод должен быть реализован и должен возвращать
Noneв случае, если загрузка не удалась из-за ошибки конфигурации, или экземпляр объекта сессии, который реализует интерфейс типа словаря + методы и атрибуты вSessionMixin.- Параметры
- Тип возвращаемого значения
-
Optional[flask.sessions.SecureCookieSession]
-
salt = 'cookie-session' -
соль, которая должна быть применена поверх секретного ключа для подписи сессий на основе куков.
-
save_session(app, session, response) -
Вызывается для фактических сессий, возвращаемых
open_session()в конце запроса. Это всё ещё вызывается в контексте запроса, поэтому, если вам абсолютно необходимо получить доступ к запросу, вы можете это сделать.- Параметры
-
- app (Flask) –
- session (flask.sessions.SessionMixin) –
- response (Response) –
- Тип возвращаемого значения
-
serializer = <flask.json.tag.TaggedJSONSerializer object> -
Python-сериализатор для полезной нагрузки. По умолчанию используется компактный JSON-сериализатор с поддержкой некоторых дополнительных типов Python, таких как объекты datetime или кортежи.
-
session_class -
Псевдоним для
flask.sessions.SecureCookieSession
-
-
class flask.sessions.SecureCookieSession(initial=None) -
Базовый класс для сессий, основанных на подписанных куках.
Этот бэкенд сессии установит атрибуты
modifiedиaccessed. Он не может надёжно отслеживать, является ли сессия новой (по сравнению с пустой), поэтомуnewостается жестко закодированным какFalse.- Параметры
-
initial (Any) –
- Тип возвращаемого значения
-
accessed = False -
заголовок, который позволяет прокси-серверам кэширования кэшировать различные страницы для разных пользователей.
-
get(key, default=None) -
Возвращает значение для ключа, если ключ есть в словаре, иначе значение по умолчанию.
- Параметры
-
- key (str) –
- default (Optional[Any]) –
- Тип возвращаемого значения
-
Any
-
modified = False -
Когда данные изменяются, это устанавливается в
True. Отслеживается только сам словарь сессии; если сессия содержит изменяемые данные (например, вложенный словарь), то это значение должно быть установлено вTrueвручную при изменении этих данных. Куки сессии будут записаны в ответ только если этоTrue.
-
setdefault(key, default=None) -
Вставляет ключ со значением по умолчанию, если ключа нет в словаре.
Возвращает значение для ключа, если ключ есть в словаре, иначе значение по умолчанию.
- Параметры
-
- key (str) –
- default (Optional[Any]) –
- Тип возвращаемого значения
-
Any
-
class flask.sessions.NullSession(initial=None) -
Класс, используемый для генерации более информативных сообщений об ошибках, если сеансы недоступны. По-прежнему позволяет читать данные из пустого сеанса, но не позволяет производить записи.
- Параметры
-
initial (Любой тип) –
- Тип возвращаемого значения
-
class flask.sessions.SessionMixin -
Расширяет базовый словарь атрибутами сеанса.
-
accessed = True -
Некоторые реализации могут определять, когда данные сеанса читаются или записываются, и устанавливать это значение в этом случае. Значение по умолчанию для миксина жёстко задано как
True.
-
modified = True -
Некоторые реализации могут определять изменения в сеансе и устанавливать это значение в этом случае. Значение по умолчанию для миксина жёстко задано как
True.
-
property permanent: bool -
Это отражает ключ
'_permanent'в словаре.
-
Примчание
Ключ конфигурации PERMANENT_SESSION_LIFETIME также может быть целым числом начиная с Flask 0.8. Либо обработайте это сами, либо используйте атрибут permanent_session_lifetime в приложении, которое автоматически преобразует результат в целое число.
Тестовый клиент
-
class flask.testing.FlaskClient(*args, **kwargs) -
Работает как обычный тестовый клиент Werkzeug, но имеет некоторое представление о том, как работает Flask, чтобы отложить очистку стека контекста запроса до конца тела
withпри использовании вwithинструкции. Для общей информации о том, как использовать этот класс, см.werkzeug.test.Client.Изменения
Изменено в версии 0.12:
app.test_client()включает предварительно заданные значения по умолчанию для среды, которые можно установить после создания объектаapp.test_client()вclient.environ_base.Основное использование описано в разделе Тестирование приложений Flask.
- Параметры
-
- args (Любой тип) –
- kwargs (Любой тип) –
- Тип возвращаемого значения
-
open(*args, as_tuple=False, buffered=False, follow_redirects=False, **kwargs) -
Генерирует словарь environ из заданных аргументов, выполняет запрос к приложению с его использованием и возвращает ответ.
- Параметры
-
-
args (Любой тип) – Передаётся в
EnvironBuilderдля создания environ для запроса. Если передан один аргумент, он может быть существующимEnvironBuilderили словарем environ. -
buffered (bool) – Преобразуйте итератор, возвращаемый приложением, в список. Если у итератора есть метод
close(), он вызывается автоматически. -
follow_redirects (bool) – Выполняйте дополнительные запросы для следования перенаправлениям HTTP до тех пор, пока не будет возвращён статус, не являющийся перенаправлением.
TestResponse.historyотображает промежуточные ответы. - as_tuple (bool) –
- kwargs (Любой тип) –
-
args (Любой тип) – Передаётся в
- Тип возвращаемого значения
Изменено в версии 2.0:
as_tupleустарело и будет удалено в Werkzeug 2.1. ИспользуйтеTestResponse.requestиrequest.environвместо него.Изменено в версии 2.0: Поток ввода запроса закрывается при вызове
response.close(). Потоки ввода для перенаправлений закрываются автоматически.Изменения
Изменено в версии 0.5: Если в словаре для параметра
dataуказан словарь как файл, тип содержимого должен называтьсяcontent_typeвместоmimetype. Это изменение было внесено для согласованности сwerkzeug.FileWrapper.Изменено в версии 0.5: Добавлен параметр
follow_redirects.
-
session_transaction(*args, **kwargs) -
При использовании в сочетании с
withинструкцией открывает транзакцию сеанса. Это можно использовать для изменения сеанса, используемого тестовым клиентом. После выхода из блокаwithсеанс сохраняется обратно.with client.session_transaction() as session: session['value'] = 42Внутренне это реализуется через временный контекст тестового запроса, и так как обработка сеансов может зависеть от переменных запроса, эта функция принимает те же аргументы, что и
test_request_context(), которые передаются напрямую.- Параметры
-
- args (Любой тип) –
- kwargs (Любой тип) –
- Тип возвращаемого значения
-
Генератор[flask.sessions.SessionMixin, None, None]
Запуск CLI-тестов
-
class flask.testing.FlaskCliRunner(app, **kwargs) -
Клиент
CliRunnerдля тестирования команд CLI приложения Flask. Обычно создаётся с помощьюtest_cli_runner(). См. Тестирование команд CLI.-
invoke(cli=None, args=None, **kwargs) -
Вызывает команду CLI в изолированной среде. См.
CliRunner.invokeдля полной документации метода. См. Тестирование команд CLI для примеров.Если аргумент
objне задан, передаёт экземплярScriptInfo, который знает, как загрузить тестируемое приложение Flask.- Параметры
-
-
cli (Необязательно[Любой тип]) – Объект команды для вызова. По умолчанию используется группа
cliприложения. - args (Необязательно[Любой тип]) – Список строк для вызова команды.
- kwargs (Любой тип) –
-
cli (Необязательно[Любой тип]) – Объект команды для вызова. По умолчанию используется группа
- Возвращает
-
объект
Result. - Тип возвращаемого значения
-
Любой тип
-
Глобальные переменные приложения
Для совместного использования данных, применимых только к одному запросу, от одной функции к другой, глобальная переменная недостаточна, так как она нарушит работу в многопоточных средах. Flask предоставляет вам специальный объект, гарантирующий его применимость только к активному запросу и возвращающий разные значения для каждого запроса. Короче говоря: он делает всё правильно, как он это делает для request и session.
-
flask.g -
Объект пространства имён, который может хранить данные во время контекста приложения контекста приложения. Это экземпляр
Flask.app_ctx_globals_class, который по умолчанию равенctx._AppCtxGlobals.Это хорошее место для хранения ресурсов во время запроса. Во время тестирования вы можете использовать шаблон Имитация ресурсов и контекста для предварительной настройки таких ресурсов.
Это прокси. Смотрите Примечания по прокси для получения дополнительной информации.
Изменения
Изменено в версии 0.10: Связан с контекстом приложения, а не с контекстом запроса.
-
class flask.ctx._AppCtxGlobals -
Простой объект. Используется в качестве пространства имён для хранения данных во время контекста приложения.
Создание контекста приложения автоматически создаёт этот объект, который доступен как прокси
g.- 'key' in g
-
Проверка наличия атрибута.
Изменения
Новое в версии 0.10.
- iter(g)
-
Возвращает итератор по именам атрибутов.
Изменения
Новое в версии 0.10.
-
get(name, default=None) -
Получение атрибута по имени или значения по умолчанию. Подобно
dict.get().- Параметры
-
- name (str) – Имя атрибута для получения.
- default (Необязательно[Любой]) – Значение, которое будет возвращено, если атрибут отсутствует.
- Тип возвращаемого значения
-
Любой
Изменения
Новое в версии 0.10.
-
pop(name, default=<object object>) -
Получение и удаление атрибута по имени. Подобно
dict.pop().- Параметры
-
- name (str) – Имя атрибута для удаления.
-
default (Любой) – Значение, которое будет возвращено, если атрибут отсутствует, вместо возбуждения
KeyError.
- Тип возвращаемого значения
-
Любой
Изменения
Новое в версии 0.11.
-
setdefault(name, default=None) -
Получение значения атрибута, если оно присутствует, в противном случае установить и вернуть значение по умолчанию. Подобно
dict.setdefault().- Параметры
-
- name (str) – Имя атрибута для получения.
- default (Необязательно[Любой]) – Значение, которое будет установлено и возвращено, если атрибут отсутствует.
- Тип возвращаемого значения
-
Любой
Изменения
Новое в версии 0.11.
Полезные функции и классы
-
flask.current_app -
Прокси к приложению, обрабатывающему текущий запрос. Это полезно для доступа к приложению без необходимости импорта или если его нельзя импортировать, например, при использовании шаблона фабрики приложения или в планах и расширениях.
Доступен только при наличии контекста приложения. Это происходит автоматически во время запросов и команд CLI. Он может быть управляем вручную с помощью
app_context().Это прокси. Смотрите Примечания по прокси для получения дополнительной информации.
-
flask.has_request_context() -
Если вам нужно проверить наличие контекста запроса, вы можете использовать эту функцию. Например, вы можете воспользоваться информацией о запросе, если объект запроса доступен, но проигнорировать его отсутствие.
class User(db.Model): def __init__(self, username, remote_addr=None): self.username = username if remote_addr is None and has_request_context(): remote_addr = request.remote_addr self.remote_addr = remote_addrТакже вы можете просто проверить истинность любого из связанных с контекстом объектов (например,
requestилиg):class User(db.Model): def __init__(self, username, remote_addr=None): self.username = username if remote_addr is None and request: remote_addr = request.remote_addr self.remote_addr = remote_addrИзменения
Новое в версии 0.7.
- Тип возвращаемого значения
-
flask.copy_current_request_context(f) -
Вспомогательная функция, которая декорирует функцию для сохранения текущего контекста запроса. Это полезно при работе с greenlets. В момент декорирования функции создаётся копия контекста запроса, а затем он добавляется при вызове функции. Текущая сессия также включена в скопированный контекст запроса.
Пример:
import gevent from flask import copy_current_request_context @app.route('/') def index(): @copy_current_request_context def do_some_work(): # do some work here, it can access flask.request or # flask.session like you would otherwise in the view function. ... gevent.spawn(do_some_work) return 'Regular response'Изменения
Новое в версии 0.10.
- Параметры
-
f (Callable) –
- Тип возвращаемого значения
-
Callable
-
flask.has_app_context() -
Работает как
has_request_context(), но для контекста приложения. Также можно просто проверить булево значение объектаcurrent_app.Изменения
Новое в версии 0.9.
- Тип возвращаемого значения
-
flask.url_for(endpoint, **values) -
Генерирует URL для заданного конечной точки с указанным методом.
Переменные аргументы, неизвестные целевой конечной точке, добавляются в сгенерированный URL в качестве параметров запроса. Если значение параметра запроса равно
None, вся пара пропускается. В случае активных Blueprint'ов вы можете сократить ссылки на тот же Blueprint, добавив точку перед локальной конечной точкой (.).Это сослаться на функцию index, локальную для текущего Blueprint:
url_for('.index')См. Строительство URL.
Значения конфигурации
APPLICATION_ROOTиSERVER_NAMEиспользуются только при генерации URL вне контекста запроса.Для интеграции приложений,
Flaskимеет обработчик для перехвата ошибок при построении URL черезFlask.url_build_error_handlers. Функцияurl_forвозвращаетBuildError, когда текущее приложение не имеет URL для заданной конечной точки и значений. Если есть,current_appвызываетurl_build_error_handlers, если это неNone, которое может вернуть строку для использования в качестве результатаurl_for(вместо того, чтобыurl_forпо умолчанию поднимал исключениеBuildError) или повторно поднять исключение. Пример:def external_url_handler(error, endpoint, values): "Looks up an external URL when `url_for` cannot build a URL." # This is an example of hooking the build_error_handler. # Here, lookup_url is some utility function you've built # which looks up the endpoint in some external URL registry. url = lookup_url(endpoint, **values) if url is None: # External lookup did not have a URL. # Re-raise the BuildError, in context of original traceback. exc_type, exc_value, tb = sys.exc_info() if exc_value is error: raise exc_type(exc_value).with_traceback(tb) else: raise error # url_for will use this result, instead of raising BuildError. return url app.url_build_error_handlers.append(external_url_handler)Здесь,
error— экземплярBuildError, аendpointиvalues— аргументы, переданные вurl_for. Обратите внимание, что это для построения URL вне текущего приложения, а не для обработки ошибок 404 NotFound.Изменения
В версии 0.10: Добавлен параметр
_scheme.В версии 0.9: Добавлены параметры
_anchorи_method.В версии 0.9: Вызывает
Flask.handle_build_error()вBuildError.- Параметры
-
- endpoint (str) – конечная точка URL (имя функции)
- values (Any) – переменные аргументы правила URL
-
_external – если установлено в
True, генерируется абсолютный URL. Адрес сервера можно изменить через переменную конфигурацииSERVER_NAME, которая используетHostзаголовок, затем IP и порт запроса. -
_scheme – строка, определяющая желаемый схему URL. Параметр
_externalдолжен быть установлен вTrueили возникаетValueError. По умолчанию используется схема текущего запроса илиPREFERRED_URL_SCHEME, если контекст запроса недоступен. Также можно установить в пустую строку для построения URL с относительным протоколом. - _anchor – если указано, добавляется в качестве якоря к URL.
- _method – если указано, явно задает HTTP-метод.
- Тип возвращаемого значения
-
flask.abort(status, *args, **kwargs) -
Вызывает
HTTPExceptionдля заданного кода состояния или WSGI-приложения.Если задан код состояния, будет произведен поиск соответствующего исключения. Если передано WSGI-приложение, оно будет обернуто в исключение прокси WSGI и вызвано:
abort(404) # 404 Not Found abort(Response('Hello World'))
-
flask.redirect(location, code=302, Response=None) -
Возвращает объект ответа (WSGI-приложение), который, при вызове, перенаправляет клиента на целевое местоположение. Поддерживаются коды 301, 302, 303, 305, 307 и 308. 300 не поддерживается, так как это не настоящее перенаправление, а 304, так как это ответ на запрос с определёнными заголовками If-Modified-Since.
Изменения
В версии 0.10: Теперь можно передавать класс, используемый для объекта Response.
В версии 0.6: Теперь местоположение может быть строкой Unicode, которая кодируется с помощью функции
iri_to_uri().- Параметры
-
- location (str) – местоположение, на которое должен перенаправить ответ.
- code (int) – код состояния перенаправления. По умолчанию 302.
-
Response (class) – класс Response для использования при создании ответа. По умолчанию
werkzeug.wrappers.Response, если не указано.
- Тип возвращаемого значения
-
flask.make_response(*args) -
Иногда необходимо задать дополнительные заголовки в представлении. Так как представления не обязательно должны возвращать объекты ответа, а могут возвращать значение, которое Flask преобразует в объект ответа, становится сложно добавлять заголовки к нему. Эту функцию можно вызвать вместо возвращаемого значения, и вы получите объект ответа, к которому вы можете добавить заголовки.
Если представление выглядит так, и вы хотите добавить новый заголовок:
def index(): return render_template('index.html', foo=42)Теперь вы можете сделать что-то вроде этого:
def index(): response = make_response(render_template('index.html', foo=42)) response.headers['X-Parachutes'] = 'parachutes are cool' return responseЭта функция принимает те же самые аргументы, которые можно вернуть из функции представления. Например, это создаёт ответ с кодом ошибки 404:
response = make_response(render_template('not_found.html'), 404)Другой случай использования этой функции — принудительно преобразовать возвращаемое значение функции представления в ответ, что полезно с декораторами представлений:
response = make_response(view_function()) response.headers['X-Parachutes'] = 'parachutes are cool'
Внутренне эта функция делает следующее:
- если не переданы аргументы, создаётся новый объект ответа
- если передан один аргумент, вызывается
flask.Flask.make_response()с ним - если передано более одного аргумента, аргументы передаются функции
flask.Flask.make_response()в виде кортежа.
Изменения
В версии 0.6.
- Параметры
-
args (Any) –
- Тип возвращаемого значения
-
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.
-
flask.send_file(path_or_file, mimetype=None, as_attachment=False, download_name=None, attachment_filename=None, conditional=True, etag=True, add_etags=None, last_modified=None, max_age=None, cache_timeout=None) -
Отправка содержимого файла клиенту.
Первый аргумент может быть путем к файлу или объектом, подобным файлу. Пути предпочтительны в большинстве случаев, потому что Werkzeug может управлять файлом и получать дополнительную информацию из пути. Передача объекта, подобного файлу, требует, чтобы файл был открыт в двоичном режиме, и это в основном полезно при создании файла в памяти с помощью
io.BytesIO.Никогда не передавайте пути к файлам, предоставленные пользователем. Предполагается, что путь является доверенным, поэтому пользователь может создать путь для доступа к файлу, который вы не имели в виду. Используйте
send_from_directory(), чтобы безопасно обслуживать запрошенные пользователем пути из каталога.Если WSGI-сервер устанавливает
file_wrapperвenviron, он используется, в противном случае используется встроенный оболочка Werkzeug. В качестве альтернативы, если HTTP-сервер поддерживаетX-Sendfile, настройка Flask с помощьюUSE_X_SENDFILE = Trueсообщит серверу о необходимости отправки указанного пути, что намного эффективнее, чем чтение его в Python.- Параметры
-
- path_or_file – Путь к файлу для отправки, относительный к текущему рабочему каталогу, если указан относительный путь. В качестве альтернативы, объект, подобный файлу, открытый в двоичном режиме. Убедитесь, что указатель файла установлен в начало данных.
- mimetype – Тип MIME для отправки файла. Если не указано, он будет пытаться определить его по имени файла.
- as_attachment – Указывает браузеру, что он должен предложить сохранить файл вместо отображения его.
- download_name – Имя по умолчанию, которое браузеры будут использовать при сохранении файла. По умолчанию используется переданное имя файла.
-
conditional – Включить условные и диапазонные ответы на основе заголовков запроса. Требует передачи пути к файлу и
environ. - etag – Вычислить ETag для файла, что требует передачи пути к файлу. Также может быть строкой для использования вместо этого.
- last_modified – Время последнего изменения для отправки файла в секундах. Если не указано, оно будет пытаться определить его по пути к файлу.
-
max_age – Время, в секундах, в течение которого клиент должен кэшировать файл. Если установлено,
Cache-Controlбудетpublic, в противном случае он будетno-cacheдля предпочтительного условного кэширования.
Изменено в версии 2.0:
download_nameзаменяет параметрattachment_filename. Еслиas_attachment=False, он передается сContent-Disposition: inlineвместо этого.Изменено в версии 2.0:
max_ageзаменяет параметрcache_timeout.conditionalвключено, аmax_ageне задано по умолчанию.Изменено в версии 2.0:
etagзаменяет параметрadd_etags. Он может быть строкой для использования вместо генерации.Изменено в версии 2.0: Передача объекта, подобного файлу, который наследуется от
TextIOBase, вызоветValueErrorвместо отправки пустого файла.Добавлена в версии 2.0: Реализация перемещена в Werkzeug. Теперь это обертка для передачи некоторых аргументов, специфичных для Flask.
Изменения
Изменено в версии 1.1:
filenameможет быть объектомPathLike.Изменено в версии 1.1: Передача объекта
BytesIOподдерживает запросы диапазона.Изменено в версии 1.0.3: Имена файлов кодируются с помощью ASCII вместо Latin-1 для более широкой совместимости с WSGI-серверами.
Изменено в версии 1.0: Поддерживаются имена файлов UTF-8, как указано в RFC 2231.
Изменено в версии 0.12: Имя файла больше не определяется автоматически из объектов файлов. Если вы хотите использовать автоматическую поддержку MIME и etag, передайте имя файла через
filename_or_fpилиattachment_filename.Изменено в версии 0.12:
attachment_filenameпредпочтительнееfilenameдля определения MIME.Изменено в версии 0.9:
cache_timeoutпо умолчанию равноFlask.get_send_file_max_age().Изменено в версии 0.7: Предварительный просмотр MIME и поддержка etag для объектов, подобных файлам, были устаревши, так как были ненадежными. Передайте имя файла, если это возможно, в противном случае укажите Etag самостоятельно.
Изменено в версии 0.5: Были добавлены параметры
add_etags,cache_timeoutиconditional. По умолчанию добавляются etag.Новая в версии 0.2.
-
flask.send_from_directory(directory, path, filename=None, **kwargs) -
Отправка файла из каталога с помощью
send_file().@app.route("/uploads/<path:name>") def download_file(name): return send_from_directory( app.config['UPLOAD_FOLDER'], name, as_attachment=True )Это безопасный способ отправки файлов из папки, например, статических файлов или загрузок. Использует
safe_join(), чтобы убедиться, что путь, полученный от клиента, не создан злонамеренно для указания на область за пределами заданного каталога.Если конечный путь не указывает на существующий обычный файл, генерируется ошибка 404
NotFound.- Параметры
-
-
directory (str) – Каталог, в котором
pathдолжен находиться. -
path (str) – Путь к файлу для отправки, относительный к
directory. -
kwargs (Any) – Аргументы для передачи в
send_file(). - filename (Optional[str]) –
-
directory (str) – Каталог, в котором
- Тип возвращаемого значения
Изменено в версии 2.0:
pathзаменяет параметрfilename.Добавлена в версии 2.0: Реализация перемещена в Werkzeug. Теперь это обертка для передачи некоторых аргументов, специфичных для Flask.
Изменения
Новая в версии 0.5.
-
flask.safe_join(directory, *pathnames) -
Безопасное объединение нуля или более компонентов пути, не являющихся доверенными, с базовым каталогом, чтобы избежать выхода за пределы базового каталога.
-
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() -
Разархивировать разметку, удалить теги и нормализовать пробелы до одиночных пробелов.
>>> 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'для предупреждений. Однако, в качестве категории можно использовать любую строку.
- Тип возвращаемого значения
-
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 использует встроенный модуль json для обработки JSON. Он будет использовать текущий синтаксический анализатор или кодировщик JSON приложения для более лёгкой настройки. По умолчанию он обрабатывает некоторые дополнительные типы данных:
-
datetime.datetimeиdatetime.dateсериализуются в строки RFC 822. Это совпадает с форматом даты HTTP. -
uuid.UUIDсериализуется в строку. -
dataclasses.dataclassпередаётся вdataclasses.asdict(). -
Markup(или любой объект с методом__html__) вызовет метод__html__для получения строки.
Фильтр Jinja |tojson настроен на использование функции Flask dumps(). Фильтр автоматически отмечает вывод как |safe. Используйте фильтр для рендеринга данных внутри тегов <script>.
<script type=text/javascript>
const names = {{ names|tosjon }};
renderChart(names, {{ axis_data|tojson }});
</script>
-
flask.json.jsonify(*args, **kwargs) -
Сериализуйте данные в JSON и оберните их в
Responseс mimetype application/json.Использует
dumps()для сериализации данных, ноargsиkwargsобрабатываются как данные, а не аргументы дляjson.dumps().- Один аргумент: обрабатывается как единственное значение.
- Несколько аргументов: обрабатываются как список значений.
jsonify(1, 2, 3)эквивалентноjsonify([1, 2, 3]). - Аргументы с именами: обрабатываются как словарь значений.
jsonify(data=data, errors=errors)эквивалентноjsonify({"data": data, "errors": errors}). - Передача как аргументов, так и аргументов с именами не допускается, так как неясно, что должно произойти.
from flask import jsonify @app.route("/users/me") def get_current_user(): return jsonify( username=g.user.username, email=g.user.email, id=g.user.id, )Возвратит ответ JSON, подобный этому:
{ "username": "admin", "email": "admin@localhost", "id": 42 }Вывод по умолчанию опускает отступы и пробелы после разделителей. В режиме отладки или если
JSONIFY_PRETTYPRINT_REGULARравноTrue, вывод будет отформатирован для лучшей читаемости.Changelog
Изменено в версии 0.11: Добавлена поддержка сериализации массивов верхнего уровня. Это создает риск безопасности в старых браузерах. См. Безопасность JSON.
Добавлен в версии 0.2.
- Parameters
-
- args (Any) –
- kwargs (Any) –
- Return type
-
flask.json.dumps(obj, app=None, **kwargs) -
Сериализует объект в строку JSON.
Принимает те же аргументы, что и встроенная функция
json.dumps(), с некоторыми значениями по умолчанию из конфигурации приложения.- Parameters
-
- obj (Any) – Объект для сериализации в JSON.
- app (Optional[Flask]) – Используйте конфигурацию этого приложения вместо активного контекста приложения или значений по умолчанию.
-
kwargs (Any) – Дополнительные аргументы, передаваемые
json.dumps().
- Return type
Изменено в версии 2.0:
encodingустарело и будет удалено в Flask 2.1.Changelog
Изменено в версии 1.0.3:
appможет быть передан напрямую, а не требует контекста приложения для настройки.
-
flask.json.dump(obj, fp, app=None, **kwargs) -
Сериализует объект в JSON, записывая его в объект файла.
Принимает те же аргументы, что и встроенная функция
json.dump(), с некоторыми значениями по умолчанию из конфигурации приложения.- Parameters
-
- obj (Any) – Объект для сериализации в JSON.
- fp (IO[str]) – Объект файла для записи JSON.
- app (Optional[Flask]) – Используйте конфигурацию этого приложения вместо активного контекста приложения или значений по умолчанию.
-
kwargs (Any) – Дополнительные аргументы, передаваемые
json.dump().
- Return type
Изменено в версии 2.0: Запись в двоичный файл и аргумент
encodingустарели и будут удалены в Flask 2.1.
-
flask.json.loads(s, app=None, **kwargs) -
Десериализует объект из строки JSON.
Принимает те же аргументы, что и встроенная функция
json.loads(), с некоторыми значениями по умолчанию из конфигурации приложения.- Parameters
-
- s (str) – Строка JSON для десериализации.
- app (Optional[Flask]) – Используйте конфигурацию этого приложения вместо активного контекста приложения или значений по умолчанию.
-
kwargs (Any) – Дополнительные аргументы, передаваемые
json.loads().
- Return type
-
Any
Изменено в версии 2.0:
encodingустарело и будет удалено в Flask 2.1. Данные должны быть строкой или байтами UTF-8.Changelog
Изменено в версии 1.0.3:
appможет быть передан напрямую, а не требует контекста приложения для настройки.
-
flask.json.load(fp, app=None, **kwargs) -
Десериализует объект из JSON, прочитанного из объекта файла.
Принимает те же аргументы, что и встроенная функция
json.load(), с некоторыми значениями по умолчанию из конфигурации приложения.- Parameters
-
- fp (IO[str]) – Объект файла для чтения JSON.
- app (Optional[Flask]) – Используйте конфигурацию этого приложения вместо активного контекста приложения или значений по умолчанию.
-
kwargs (Any) – Дополнительные аргументы, передаваемые
json.load().
- Return type
-
Any
Изменено в версии 2.0:
encodingустарело и будет удалено в Flask 2.1. Файл должен быть в текстовом режиме или в двоичном режиме с байтами UTF-8.
-
class flask.json.JSONEncoder(*, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, sort_keys=False, indent=None, separators=None, default=None) -
По умолчанию используется кодировщик JSON. Обрабатывает дополнительные типы по сравнению со встроенным
json.JSONEncoder.-
datetime.datetimeиdatetime.dateсериализуются в строки формата RFC 822. Это соответствует формату даты HTTP. -
uuid.UUIDсериализуется в строку. -
dataclasses.dataclassпередается вdataclasses.asdict(). -
Markup(или любой объект с методом__html__) вызовет метод__html__для получения строки.
Для переопределения значения по умолчанию назначьте подкласс этого класса в
flask.Flask.json_encoderилиflask.Blueprint.json_encoder.-
default(o) -
Преобразует
oв сериализуемый в JSON тип. См.json.JSONEncoder.default(). Python не поддерживает переопределение способа сериализации основных типов, таких какstrилиlist, они обрабатываются до вызова этого метода.- Parameters
-
o (Any) –
- Return type
-
Any
-
-
class flask.json.JSONDecoder(*, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, strict=True, object_pairs_hook=None) -
По умолчанию используется декодировщик JSON.
Это не изменяет поведение встроенного
json.JSONDecoder.Для переопределения значения по умолчанию назначьте подкласс этого класса в
flask.Flask.json_decoderилиflask.Blueprint.json_decoder.
Отмеченный JSON
Компактное представление для потери без потери сериализации нестандартных типов JSON. SecureCookieSessionInterface использует это для сериализации данных сеанса, но может быть полезен и в других местах. Его можно расширить для поддержки других типов.
-
class flask.json.tag.TaggedJSONSerializer -
Сериализатор, использующий систему меток для компактного представления объектов, которые не являются типами JSON. Передается как промежуточный сериализатор в
itsdangerous.Serializer.Поддерживаются следующие дополнительные типы:
- Return type
-
default_tags = [<class 'flask.json.tag.TagDict'>, <class 'flask.json.tag.PassDict'>, <class 'flask.json.tag.TagTuple'>, <class 'flask.json.tag.PassList'>, <class 'flask.json.tag.TagBytes'>, <class 'flask.json.tag.TagMarkup'>, <class 'flask.json.tag.TagUUID'>, <class 'flask.json.tag.TagDateTime'>] -
Классы меток для привязки при создании сериализатора. Другие метки можно добавить позже, используя
register().
-
dumps(value) -
Пометить значение и сбросить его в компактную строку JSON.
- Parameters
-
value (Any) –
- Return type
-
loads(value) -
Загрузить данные из строки JSON и десериализовать любые помеченные объекты.
- Parameters
-
value (str) –
- Return type
-
Any
-
register(tag_class, force=False, index=None) -
Зарегистрировать новую метку в этом сериализаторе.
- Parameters
-
- tag_class (Type[flask.json.tag.JSONTag]) – класс тегов для регистрации. Будет создан с экземпляром этого сериализатора.
-
force (bool) – перезаписать существующую метку. Если false (по умолчанию), возбуждается
KeyError. -
index (Optional[int]) – индекс для вставки новой метки в порядке меток. Полезно, когда новая метка является частным случаем существующей метки. Если
None(по умолчанию), метка добавляется в конец порядка.
- Raises
-
KeyError – если ключ метки уже зарегистрирован и
forceне true. - Return type
-
tag(value) -
Преобразовать значение в помеченное представление, если необходимо.
- Parameters
-
value (Any) –
- Return type
-
Dict[str, Any]
-
untag(value) -
Преобразовать помеченное представление обратно в исходный тип.
- Parameters
-
value (Dict[str, Any]) –
- Return type
-
Any
-
class flask.json.tag.JSONTag(serializer) -
Базовый класс для определения тегов типов для
TaggedJSONSerializer.- Параметры
-
serializer (TaggedJSONSerializer) –
- Тип возвращаемого значения
-
check(value) -
Проверка, нужно ли этому тегу помечать данное значение.
- Параметры
-
value (Any) –
- Тип возвращаемого значения
-
key: Optional[str] = None -
Тег для маркировки сериализованного объекта. Если
None, этот тег используется только как промежуточный шаг при маркировке.
-
tag(value) -
Преобразование значения в допустимый тип JSON и добавление структуры тега вокруг него.
- Параметры
-
value (Any) –
- Тип возвращаемого значения
-
Any
-
to_json(value) -
Преобразование объекта Python в объект, являющийся допустимым типом JSON. Тег будет добавлен позже.
- Параметры
-
value (Any) –
- Тип возвращаемого значения
-
Any
-
to_python(value) -
Преобразование представления JSON обратно в правильный тип. Тег уже будет удален.
- Параметры
-
value (Any) –
- Тип возвращаемого значения
-
Any
Рассмотрим пример, добавляющий поддержку OrderedDict. Словари в JSON не упорядочены, поэтому для обработки этого мы будем выводить элементы как список пар [key, value]. Подклассируйте JSONTag и присвойте ему новый ключ ' od' для идентификации типа. Сериализатор сессий сначала обрабатывает словари, поэтому вставьте новый тег в начало порядка, так как OrderedDict должен обрабатываться перед dict.
from flask.json.tag import JSONTag
class TagOrderedDict(JSONTag):
__slots__ = ('serializer',)
key = ' od'
def check(self, value):
return isinstance(value, OrderedDict)
def to_json(self, value):
return [[k, self.serializer.tag(v)] for k, v in iteritems(value)]
def to_python(self, value):
return OrderedDict(value)
app.session_interface.serializer.register(TagOrderedDict, index=0)
Рендеринг шаблонов
-
flask.render_template(template_name_or_list, **context) -
Рендерит шаблон из папки шаблонов с заданным контекстом.
-
flask.render_template_string(source, **context) -
Рендерит шаблон из заданной строки шаблона с заданным контекстом. Переменные шаблона будут автоматически экранированы.
-
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вместо этого.- Parameters
- Return type
-
from_envvar(variable_name, silent=False) -
Загружает конфигурацию из переменной среды, указывающей на файл конфигурации. Это по сути всего лишь сокращение с более понятными сообщениями об ошибках для этой строки кода:
app.config.from_pyfile(os.environ['YOURAPPLICATION_SETTINGS'])
-
from_file(filename, load, silent=False) -
Обновляет значения в конфигурации из файла, загруженного с помощью параметра
load. Загруженные данные передаются методуfrom_mapping().import toml app.config.from_file("config.toml", load=toml.load)- Parameters
-
- filename (str) – Путь к файлу данных. Это может быть абсолютный путь или путь, относительный к корневому пути конфигурации.
-
load (
Callable[[Reader], Mapping]гдеReaderреализует методread.) – вызываемый объект, принимающий дескриптор файла и возвращающий отображение загруженных данных из файла. - silent (bool) – Игнорировать файл, если он не существует.
- Return type
Новое в версии 2.0.
-
from_mapping(mapping=None, **kwargs) -
Обновляет конфигурацию, как
update()игнорируя элементы с ключами, не имеющими заглавных букв.Changelog
Новое в версии 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_pyfile(filename, silent=False) -
Обновляет значения в конфигурации из файла Python. Эта функция ведет себя так, как если бы файл был импортирован как модуль с помощью функции
from_object().- Parameters
- Return type
Changelog
Новое в версии 0.7:
silentпараметр.
-
get_namespace(namespace, lowercase=True, trim_namespace=True) -
Возвращает словарь, содержащий подмножество параметров конфигурации, соответствующих указанному имени пространства имен/префиксу. Пример использования:
app.config['IMAGE_STORE_TYPE'] = 'fs' app.config['IMAGE_STORE_PATH'] = '/var/app/images' app.config['IMAGE_STORE_BASE_URL'] = 'http://img.website.com' image_store_config = app.config.get_namespace('IMAGE_STORE_')Полученный словарь
image_store_configбудет выглядеть следующим образом:{ 'type': 'fs', 'path': '/var/app/images', 'base_url': 'http://img.website.com' }Это часто полезно, когда параметры конфигурации напрямую отображаются на ключевые аргументы в функциях или конструкторах классов.
- Параметры
- Тип возвращаемого значения
-
Dict[str, Any]
Изменения
Добавлен в версии 0.11.
-
Справочные данные по потокам
-
flask.stream_with_context(generator_or_function) -
Контексты запроса исчезают, когда ответ запускается на сервере. Это делается для повышения эффективности и для уменьшения вероятности возникновения утечек памяти при использовании плохо написанных WSGI-мидлваров. Недостатком является то, что если вы используете ответы со струйными данными, генератор больше не может получить доступ к информации, связанной с запросом.
Однако эта функция может помочь сохранить контекст на более длительное время:
from flask import stream_with_context, request, Response @app.route('/stream') def streamed_response(): @stream_with_context def generate(): yield 'Hello ' yield request.args['name'] yield '!' return Response(generate())В качестве альтернативы она также может быть использована вокруг определенного генератора:
from flask import stream_with_context, request, Response @app.route('/stream') def streamed_response(): def generate(): yield 'Hello ' yield request.args['name'] yield '!' return Response(stream_with_context(generate()))Изменения
Добавлен в версии 0.9.
- Параметры
-
generator_or_function (Union[Generator, Callable]) –
- Тип возвращаемого значения
-
Генератор
Полезные внутренние элементы
-
class flask.ctx.RequestContext(app, environ, request=None, session=None) -
Контекст запроса содержит всю информацию, относящуюся к запросу. Он создаётся в начале запроса и добавляется в
_request_ctx_stack, а удаляется в конце. Он создаст адаптер URL и объект запроса для предоставленной WSGI-среды.Не пытайтесь использовать этот класс напрямую, вместо этого используйте
test_request_context()иrequest_context()для создания этого объекта.При извлечении контекста запроса, он будет выполнять все функции, зарегистрированные в приложении для завершения выполнения (
teardown_request()).Контекст запроса автоматически извлекается в конце запроса. В режиме отладки контекст запроса сохраняется, если произойдут исключения, чтобы интерактивные отладчики имели возможность инспектировать данные. С версии 0.4 это также можно принудительно сделать для запросов, которые не завершились ошибкой и вне
DEBUGрежима. Установив'flask._preserve_context'вTrueв WSGI-среде, контекст не будет извлекаться в конце запроса. Это используется клиентомtest_client(), например, для реализации отложенной функциональности очистки.Это может быть полезно для модульных тестов, где вам нужна информация из локального контекста на немного более длительное время. Убедитесь, что в этой ситуации вы правильно
pop()стек самостоятельно, иначе ваши модульные тесты будут создавать утечки памяти.- Параметры
-
- app (Flask) –
- environ (dict) –
- request (Optional[Request]) –
- session (Optional[SessionMixin]) –
- Тип возвращаемого значения
-
copy() -
Создаёт копию контекста запроса с тем же объектом запроса. Это можно использовать для перемещения контекста запроса в другой greenlet. Поскольку фактический объект запроса одинаков, это нельзя использовать для перемещения контекста запроса в другую нить, если доступ к объекту запроса не заблокирован.
Изменения
Изменено в версии 1.1: Используется текущий объект сессии вместо перезагрузки исходных данных. Это предотвращает
flask.sessionот указания на устаревший объект.Добавлен в версии 0.10.
- Тип возвращаемого значения
-
match_request() -
Может быть переопределён подклассом для подключения к сопоставлению запроса.
- Тип возвращаемого значения
-
pop(exc=<object object>) -
Удаляет контекст запроса и отвязывает его, выполнив это действие. Это также вызовет выполнение функций, зарегистрированных декоратором
teardown_request().Изменения
Изменено в версии 0.9: Добавлен аргумент
exc.- Параметры
-
exc (Optional[BaseException]) –
- Тип возвращаемого значения
-
push() -
Связывает контекст запроса с текущим контекстом.
- Тип возвращаемого значения
-
flask._request_ctx_stack -
Внутренний
LocalStack, который хранитRequestContextэкземпляры. Обычно, вместо стека следует обращаться к проксиrequestиsession. Доступ к стеку может быть полезен в коде расширения.Следующие атрибуты всегда присутствуют в каждом слое стека:
-
app -
активное приложение Flask.
-
url_adapter -
адаптер URL, который использовался для сопоставления запроса.
-
request -
текущий объект запроса.
-
session -
активный объект сессии.
-
g -
объект со всеми атрибутами объекта
flask.g. -
flashes -
внутренний кэш для сообщений, отображаемых в виде всплывающих подсказок.
Пример использования:
from flask import _request_ctx_stack def get_session(): ctx = _request_ctx_stack.top if ctx is not None: return ctx.session -
-
class flask.ctx.AppContext(app) -
Контекст приложения связывает объект приложения неявно с текущей нитью или зелёной нитью, подобно тому, как
RequestContextсвязывает информацию о запросе. Контекст приложения также неявно создаётся, если создан контекст запроса, но приложение не находится вверху отдельного контекста приложения.-
pop(exc=<object object>) -
Удаляет контекст приложения.
- Параметры
-
exc (Необязательно[BaseException]) –
- Тип возвращаемого значения
-
push() -
Привязывает контекст приложения к текущему контексту.
- Тип возвращаемого значения
-
-
flask._app_ctx_stack -
Внутренний
LocalStack, который хранит экземплярыAppContext. Обычно вместо стека следует обращаться к проксиcurrent_appиg. Расширения могут получить доступ к контекстам в стеке как к пространству имён для хранения данных.Журнал изменений
Новая версия в версии 0.9.
-
class flask.blueprints.BlueprintSetupState(blueprint, app, options, first_registration) -
Временный объект для регистрации модуля Blueprint в приложении. Экземпляр этого класса создаётся методом
make_setup_state()и затем передаётся всем функциям обратного вызова регистрации.- Параметры
- Тип возвращаемого значения
-
add_url_rule(rule, endpoint=None, view_func=None, **options) -
Вспомогательный метод для регистрации правила (и необязательно функции представления) в приложении. Конечная точка автоматически добавляется с именем модуля Blueprint.
-
app -
ссылка на текущее приложение
-
blueprint -
ссылка на модуль Blueprint, создавший этот объект состояния.
-
first_registration -
Поскольку модули Blueprint могут регистрироваться в приложении несколько раз, а не всё нужно регистрировать по несколько раз, этот атрибут можно использовать, чтобы выяснить, был ли модуль Blueprint зарегистрирован ранее.
-
options -
словарь со всеми параметрами, которые были переданы методу
register_blueprint().
-
subdomain -
Поддомен, для которого должен быть активен модуль Blueprint,
Noneв противном случае.
-
url_defaults -
Словарь с значениями по умолчанию для URL, которые добавляются ко всем URL, определённым с помощью модуля Blueprint.
-
url_prefix -
Префикс, который должен использоваться для всех URL, определённых в модуле Blueprint.
Сигналы
Журнал изменений
Новая версия в версии 0.6.
-
signals.signals_available -
Trueесли система сигнализации доступна. Это так, когда установлен пакет blinker.
В Flask существуют следующие сигналы:
-
flask.template_rendered -
Этот сигнал отправляется, когда шаблон был успешно обработан. Сигнал вызывается с экземпляром шаблона как
templateи контекстом как словарь (названныйcontext).Пример подписчика:
def log_template_renders(sender, template, context, **extra): sender.logger.debug('Rendering template "%s" with context %s', template.name or 'string template', context) from flask import template_rendered template_rendered.connect(log_template_renders, app)
- flask.before_render_template
-
Этот сигнал отправляется перед обработкой шаблона. Сигнал вызывается с экземпляром шаблона как
templateи контекстом как словарь (названныйcontext).Пример подписчика:
def log_template_renders(sender, template, context, **extra): sender.logger.debug('Rendering template "%s" with context %s', template.name or 'string template', context) from flask import before_render_template before_render_template.connect(log_template_renders, app)
-
flask.request_started -
Этот сигнал отправляется при настройке контекста запроса перед любой обработкой запроса. Поскольку контекст запроса уже связан, подписчик может получить доступ к запросу с помощью стандартных глобальных прокси, таких как
request.Пример подписчика:
def log_request(sender, **extra): sender.logger.debug('Request context is set up') from flask import request_started request_started.connect(log_request, app)
-
flask.request_finished -
Этот сигнал отправляется непосредственно перед отправкой ответа клиенту. Он передаёт ответ, который нужно отправить, под именем
response.Пример подписчика:
def log_response(sender, response, **extra): sender.logger.debug('Request context is about to close down. ' 'Response: %s', response) from flask import request_finished request_finished.connect(log_response, app)
-
flask.got_request_exception -
Этот сигнал отправляется, когда во время обработки запроса возникает необработанное исключение, включая отладку. Исключение передаётся подписчику как
exception.Этот сигнал не отправляется для
HTTPExceptionили других исключений, для которых зарегистрированы обработчики ошибок, если исключение не было поднято из обработчика ошибок.Этот пример показывает, как выполнить дополнительное ведение журнала, если возникло теоретическое исключение
SecurityException:from flask import got_request_exception def log_security_exception(sender, exception, **extra): if not isinstance(exception, SecurityException): return security_logger.exception( f"SecurityException at {request.url!r}", exc_info=exception, ) got_request_exception.connect(log_security_exception, app)
-
flask.request_tearing_down -
Этот сигнал отправляется, когда запрос завершается. Он всегда вызывается, даже если возникает исключение. В настоящее время функции, подписывающиеся на этот сигнал, вызываются после стандартных обработчиков завершения работы, но на это нельзя полагаться.
Пример подписчика:
def close_db_connection(sender, **extra): session.close() from flask import request_tearing_down request_tearing_down.connect(close_db_connection, app)Начиная с Flask 0.9, в качестве аргумента
excтакже передаётся ссылка на исключение, которое вызвало завершение работы, если таковое имелось.
-
flask.appcontext_tearing_down -
Этот сигнал отправляется при завершении работы контекста приложения. Он всегда вызывается, даже если возникает исключение. В настоящее время функции, подписывающиеся на этот сигнал, вызываются после стандартных обработчиков завершения работы, но на это нельзя полагаться.
Пример подписчика:
def close_db_connection(sender, **extra): session.close() from flask import appcontext_tearing_down appcontext_tearing_down.connect(close_db_connection, app)В качестве аргумента
excтакже передаётся ссылка на исключение, которое вызвало завершение работы, если таковое имелось.
-
flask.appcontext_pushed -
Это сигнал, отправляемый при вставке контекста приложения. Отправителем является приложение. Это обычно полезно для юнит-тестов, чтобы временно подключить информацию. Например, его можно использовать для ранней установки ресурса в объект
g.Пример использования:
from contextlib import contextmanager from flask import appcontext_pushed @contextmanager def user_set(app, user): def handler(sender, **kwargs): g.user = user with appcontext_pushed.connected_to(handler, app): yieldИ в коде теста:
def test_user_me(self): with user_set(app, 'john'): c = app.test_client() resp = c.get('/users/me') assert resp.data == 'username=john'Changelog
Добавлено в версии 0.10.
-
flask.appcontext_popped -
Этот сигнал отправляется при извлечении контекста приложения. Отправителем является приложение. Обычно он связан со сигналом
appcontext_tearing_down.Changelog
Добавлено в версии 0.10.
-
flask.message_flashed -
Этот сигнал отправляется, когда приложение отображает сообщение. Сообщение отправляется в качестве
messageаргумента ключевого слова, а категория — какcategory.Пример подписчика:
recorded = [] def record(sender, message, category, **extra): recorded.append((message, category)) from flask import message_flashed message_flashed.connect(record, app)Changelog
Добавлено в версии 0.10.
-
class signals.Namespace -
Псевдоним для
blinker.base.Namespace, если blinker доступен, в противном случае — базовый класс, создающий фиктивные сигналы. Этот класс доступен для расширений Flask, которые хотят предоставить ту же систему обратного вызова, что и Flask.-
signal(name, doc=None) -
Создает новый сигнал для этого пространства имён, если blinker доступен, в противном случае возвращает фиктивный сигнал, у которого метод send ничего не делает, но при других операциях, включая подключение, выдает исключение
RuntimeError.
-
Представления на основе классов
Changelog
Добавлено в версии 0.7.
-
class flask.views.View -
Альтернативный способ использования функций представлений. Подкласс должен реализовать
dispatch_request(), который вызывается с аргументами представления из системы маршрутизации URL. Еслиmethodsпредоставлен, методы не нужно явно передавать в методadd_url_rule():class MyView(View): methods = ['GET'] def dispatch_request(self, name): return f"Hello {name}!" app.add_url_rule('/hello/<name>', view_func=MyView.as_view('myview'))Когда вы хотите декорировать подключаемое представление, вам нужно сделать это либо при создании функции представления (обернув результат
as_view()), либо использовать атрибутdecorators:class SecretView(View): methods = ['GET'] decorators = [superuser_required] def dispatch_request(self): ...Декораторы, хранящиеся в списке decorators, применяются один за другим при создании функции представления. Обратите внимание, что вы не можете использовать декораторы на основе классов, так как они будут декорировать класс представления, а не сгенерированную функцию представления!
-
classmethod as_view(name, *class_args, **class_kwargs) -
Преобразует класс в фактическую функцию представления, которая может быть использована с системой маршрутизации. Внутренне это генерирует функцию на лету, которая будет инициализировать
Viewпри каждом запросе и вызывать методdispatch_request()на нём.Аргументы, переданные в
as_view(), передаются в конструктор класса.- Parameters
-
- name (str) –
- class_args (Any) –
- class_kwargs (Any) –
- Return type
-
Callable
-
decorators: List[Callable] = [] -
Канонический способ декорирования представлений на основе классов — декорировать результат as_view(). Однако, поскольку это перемещает части логики из объявления класса в место, где он подключён к системе маршрутизации.
Вы можете поместить один или несколько декораторов в этот список, и всякий раз, когда создаётся функция представления, результат автоматически декорируется.
Changelog
Добавлено в версии 0.8.
-
dispatch_request() -
Подклассы должны переопределять этот метод, чтобы реализовать фактический код функции представления. Этот метод вызывается со всеми аргументами из правила URL.
-
methods: Optional[List[str]] = None -
Список методов, которые может обрабатывать это представление.
-
provide_automatic_options: Optional[bool] = None -
Установка этого параметра отключает или принудительно включает автоматическую обработку OPTIONS.
-
-
class flask.views.MethodView -
Класс-виджет, который распределяет методы запроса соответствующим методам класса. Например, если вы реализуете метод
get, он будет использоваться для обработки запросовGET.class CounterAPI(MethodView): def get(self): return session.get('counter', 0) def post(self): session['counter'] = session.get('counter', 0) + 1 return 'OK' app.add_url_rule('/counter', view_func=CounterAPI.as_view('counter'))-
dispatch_request(*args, **kwargs) -
Подклассы должны переопределять этот метод для реализации фактической функции представления. Этот метод вызывается со всеми аргументами из правила URL.
- Параметры
-
- args (Any) –
- kwargs (Any) –
- Тип возвращаемого значения
-
Union[Response, AnyStr, Dict[str, Any], Generator[AnyStr, None, None], Tuple[Union[Response, AnyStr, Dict[str, Any], Generator[AnyStr, None, None]], Union[Headers, Dict[str, Union[str, List[str], Tuple[str, …]]], List[Tuple[str, Union[str, List[str], Tuple[str, …]]]]]], Tuple[Union[Response, AnyStr, Dict[str, Any], Generator[AnyStr, None, None]], int], Tuple[Union[Response, AnyStr, Dict[str, Any], Generator[AnyStr, None, None]], int, Union[Headers, Dict[str, Union[str, List[str], Tuple[str, …]]], List[Tuple[str, Union[str, List[str], Tuple[str, …]]]]]], WSGIApplication]
-
Регистрация правил маршрутов URL
В целом, есть три способа определить правила для системы маршрутизации:
- Вы можете использовать декоратор
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, поэтому применяются следующие правила:
- Если правило заканчивается косой чертой, а пользователь запрашивает его без косой черты, пользователь автоматически перенаправляется на ту же страницу с присоединенной хвостовой косой чертой.
- Если правило не заканчивается косой чертой, а пользователь запрашивает страницу с косой чертой, возникает ошибка 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__: Имя функции по умолчанию используется в качестве конечной точки. Если конечная точка задана явно, используется это значение. Кроме того, по умолчанию к этому значению будет добавлен префикс с именем синего плана, который не может быть настроен из самой функции. -
methods: Если методы не указаны при добавлении правила URL, Flask будет искать их в самом объекте функции представления, если существует атрибутmethods. Если он существует, он будет извлекать информацию о методах оттуда. -
provide_automatic_options: Если этот атрибут установлен, Flask будет либо принудительно включать, либо отключать автоматическую реализацию HTTP-ответаOPTIONS. Это может быть полезно при работе с декораторами, которые хотят настроить ответOPTIONSна уровне каждого представления. -
required_methods: Если этот атрибут установлен, Flask всегда будет добавлять эти методы при регистрации правила URL, даже если методы были явно переопределены в вызовеroute().
Полный пример:
def index():
if request.method == 'OPTIONS':
# custom options handling here
...
return 'Hello World!'
index.provide_automatic_options = False
index.methods = ['GET', 'OPTIONS']
app.add_url_rule('/', index)
Журнал изменений
В версии 0.8: Добавлена функциональность provide_automatic_options.
Интерфейс командной строки
-
class flask.cli.FlaskGroup(add_default_commands=True, create_app=None, add_version_option=True, load_dotenv=True, set_debug_flag=True, **extra) -
Специальный подкласс группы
AppGroup, поддерживающий загрузку дополнительных команд из настроенного приложения Flask. Обычно разработчику не нужно взаимодействовать с этим классом, но есть некоторые очень продвинутые случаи использования, для которых имеет смысл создать экземпляр этого класса. См. Пользовательские скрипты.- Параметры
-
- add_default_commands – если True, то будут добавлены команды run и shell по умолчанию.
-
add_version_option – добавляет опцию
--version. - create_app – необязательный обратный вызов, которому передается информация о скрипте, и который возвращает загруженное приложение.
-
load_dotenv – Загрузить ближайшие файлы
.envи.flaskenvдля установки переменных среды. Также изменит рабочую директорию на директорию, содержащую первый найденный файл. - set_debug_flag – Установить флаг отладки приложения на основе активной среды
Журнал изменений
Изменено в версии 1.0: Если установлено, будет использоваться python-dotenv для загрузки переменных среды из файлов
.envи.flaskenv.-
get_command(ctx, name) -
На основе контекста и имени команды возвращает объект
Command, если он существует, или возвращаетNone.
-
list_commands(ctx) -
Возвращает список имён подкоманд в порядке их появления.
-
main(*args, **kwargs) -
Это способ вызова скрипта со всеми функциями как командной строки. Это всегда завершает приложение после вызова. Если этого не нужно, нужно перехватить
SystemExit.Этот метод также доступен путем прямого вызова экземпляра
Command.- Параметры
-
-
args – аргументы, которые должны использоваться для парсинга. Если не указаны, используется
sys.argv[1:]. -
prog_name – имя программы, которое должно использоваться. По умолчанию имя программы создается путем взятия имени файла из
sys.argv[0]. -
complete_var – переменная среды, которая управляет поддержкой завершения ввода bash. По умолчанию
"_<prog_name>_COMPLETE"с prog_name в верхнем регистре. -
standalone_mode – поведение по умолчанию — вызывать скрипт в автономном режиме. Click затем будет обрабатывать исключения и преобразовывать их в сообщения об ошибках, и функция никогда не вернётся, но завершит интерпретатор. Если это установлено в
False, они будут переданы вызывающей стороне, а возвращаемое значение этой функции будет возвращаемым значениемinvoke(). -
extra – дополнительные ключевые аргументы передаются в конструктор контекста. Подробнее см.
Context.
-
args – аргументы, которые должны использоваться для парсинга. Если не указаны, используется
Изменено в версии 8.0: При взятии аргументов из
sys.argvв Windows расширяются шаблоны glob, пользовательский каталог и переменные среды.Изменено в версии 3.0: Добавлен параметр
standalone_mode.
-
class flask.cli.AppGroup(name=None, commands=None, **attrs) -
Работает аналогично обычной группе click
Group, но изменяет поведение декоратораcommand()таким образом, что он автоматически оборачивает функции вwith_appcontext().Не путать с
FlaskGroup.- Параметры
- Возвращаемый тип
-
command(*args, **kwargs) -
Работает точно так же, как одноимённый метод обычной группы
click.Group, но оборачивает обратные вызовы вwith_appcontext(), если это не отключено путём передачиwith_appcontext=False.
-
group(*args, **kwargs) -
Работает точно так же, как одноимённый метод обычной группы
click.Group, но по умолчанию устанавливает класс группы вAppGroup.
-
class flask.cli.ScriptInfo(app_import_path=None, create_app=None, set_debug_flag=True) -
Вспомогательный объект для работы с приложениями Flask. Обычно взаимодействовать с ним не нужно, так как он используется внутри click для диспетчеризации. В будущих версиях Flask этот объект, скорее всего, будет играть большую роль. Обычно он создаётся автоматически с помощью
FlaskGroup, но вы также можете вручную его создать и передать как объект click.-
app_import_path -
Необязательно путь импорта для приложения Flask.
-
create_app -
Необязательная функция, которой передаётся информация о скрипте для создания экземпляра приложения.
-
data -
Словарь с произвольной информацией, которую можно связать с этой информацией о скрипте.
-
load_app() -
Загружает приложение Flask (если оно ещё не загружено) и возвращает его. Вызов этого метода несколько раз приведет только к возврату уже загруженного приложения.
-
-
flask.cli.load_dotenv(path=None) -
Загрузить файлы «dotenv» в порядке приоритета, чтобы установить переменные среды.
Если переменная среды уже установлена, она не перезаписывается, поэтому более ранние файлы в списке имеют приоритет над последующими.
Это пустая операция, если python-dotenv не установлен.
- Параметры
-
path – Загрузить файл по этому расположению вместо поиска.
- Возвращает
-
Trueесли файл был загружен.
Изменено в версии 2.0: При загрузке файлов env установлено кодирование по умолчанию UTF-8.
Журнал изменений
Изменено в версии 1.1.0: Возвращает
Falseесли python-dotenv не установлен или указанный путь не является файлом.Новое в версии 1.0.
-
flask.cli.with_appcontext(f) -
Оборачивает обратный вызов, чтобы гарантировать, что он будет выполнен с контекстом приложения скрипта. Если обратные вызовы зарегистрированы напрямую в объекте
app.cli, они по умолчанию оборачиваются этой функцией, если это не отключено.
-
flask.cli.pass_script_info(f) -
Помечает функцию так, чтобы экземпляр
ScriptInfoпередавался в качестве первого аргумента в обратный вызов click.- Параметры
-
f (click.decorators.F) –
- Тип возвращаемого значения
-
click.decorators.F
-
flask.cli.run_command = <Command run> -
Запуск локального сервера разработки.
Этот сервер предназначен только для целей разработки. Он не обеспечивает стабильность, безопасность или производительность серверов WSGI для производства.
Релоадер и отладчик включены по умолчанию, если FLASK_ENV=development или FLASK_DEBUG=1.
- Параметры
-
- args (Any) –
- kwargs (Any) –
- Тип возвращаемого значения
-
Any
-
flask.cli.shell_command = <Command shell> -
Запуск интерактивной оболочки Python в контексте данного приложения Flask. Приложение заполнит пространство имён по умолчанию этой оболочки в соответствии с её конфигурацией.
Это полезно для выполнения небольших фрагментов управляющего кода без необходимости ручной настройки приложения.
- Параметры
-
- args (Any) –
- kwargs (Any) –
- Тип возвращаемого значения
-
Any
© 2007–2021 Pallets
Licensed under the BSD 3-clause License.
https://flask.palletsprojects.com/en/2.0.x/api/