Spec-Zone.ru › Flask 3.0

Изменения

Версия 3.0.0

Выпущено 2023-09-30

  • Удален ранее устаревший код. #5223
  • Атрибут __version__ объявлен устаревшим. Используйте функцию определения возможностей или importlib.metadata.version("flask"), вместо этого. #5230
  • Перестроено кодовую базу таким образом, чтобы классы Flask (app) и Blueprint имели базовые классы Sans-IO. #5127
  • Разрешено использование self в качестве аргумента для url_for. #5264
  • Требуется Werkzeug >= 3.0.0.

Версия 2.3.3

Выпущено 2023-08-21

  • Совместимость с Python 3.12.
  • Требуется Werkzeug >= 2.3.7.
  • Используйте flit_core вместо setuptools в качестве бэкенда сборки.
  • Изменен способ определения корневого и пути экземпляра приложения. #5160

Версия 2.3.2

Выпущено 2023-05-01

  • Установка заголовка Vary: Cookie при доступе, изменении или обновлении сессии.
  • Обновление требования к Werkzeug до >=2.3.3 для применения недавних исправлений ошибок.

Версия 2.3.1

Выпущено 2023-04-25

  • Восстановлен устаревший from flask import Markup. #5084

Версия 2.3.0

Выпущено 2023-04-25

  • Убрана поддержка Python 3.7. #5072
  • Обновлены минимальные требования до последних версий: Werkzeug>=2.3.0, Jinja2>3.1.2, itsdangerous>=2.1.2, click>=8.1.3.
  • Удален ранее устаревший код. #4995

    • Методы push и pop устаревших объектов _app_ctx_stack и _request_ctx_stack удалены. top всё ещё существует, чтобы дать расширениям больше времени на обновление, но оно будет удалено.
    • Переменная среды FLASK_ENV, ключ конфигурации ENV и свойство app.env удалены.
    • Свойства session_cookie_name, send_file_max_age_default, use_x_sendfile, propagate_exceptions, и templates_auto_reload объекта app удалены.
    • Ключи конфигурации JSON_AS_ASCII, JSON_SORT_KEYS, JSONIFY_MIMETYPE, и JSONIFY_PRETTYPRINT_REGULAR удалены.
    • Декораторы app.before_first_request и bp.before_app_first_request удалены.
    • Атрибуты json_encoder и json_decoder в app и blueprint, а также соответствующие классы json.JSONEncoder и JSONDecoder удалены.
    • Функции json.htmlsafe_dumps и htmlsafe_dump удалены.
    • Вызов методов setup для blueprints после регистрации теперь приводит к ошибке вместо предупреждения. #4997
  • Импортирование escape и Markup из flask устарело. Импортируйте их напрямую из markupsafe вместо этого. #4996
  • Свойство app.got_first_request устарело. #4997
  • Декоратор locked_cached_property устарел. Используйте блокировку внутри декорированной функции, если требуется блокировка. #4993
  • Сигналы всегда доступны. blinker>=1.6.2 является необходимым зависимостью. Атрибут signals_available устарел. #5056
  • Сигналы поддерживают функции подписчиков async. #5049
  • Удалены использования блокировок, которые могли бы приводить к кратковременным блокировкам запросов друг друга. #4993
  • Используйте современную метаданные пакетов с pyproject.toml вместо setup.cfg. #4947
  • Убедитесь, что поддомены применяются с вложенными blueprints. #4834
  • config.from_file может использовать text=False для указания того, что парсер хочет двоичный файл вместо этого. #4989
  • Если blueprint создается с пустым именем, генерируется исключение ValueError. #5010
  • SESSION_COOKIE_DOMAIN не использует SERVER_NAME в качестве резервного варианта. По умолчанию домен не задаётся, что современные браузеры интерпретируют как точное совпадение, а не совпадение по поддомену. Также удалены предупреждения о localhost и IP-адресах. #5051
  • Команда routes отображает для каждой правила его subdomain или host при использовании соответствия по домену. #5004
  • Использование отложенной оценки аннотаций. #5071

Версия 2.2.5

Выпущено 2023-05-02

  • Обновление для совместимости с Werkzeug 2.3.3.
  • Установка заголовка Vary: Cookie при доступе, изменении или обновлении сессии.

Версия 2.2.4

Выпущено 2023-04-25

  • Обновление для совместимости с Werkzeug 2.3.

Версия 2.2.3

Выпущено 2023-02-15

  • Автоэскейп включён по умолчанию для .svg шаблонов. #4831
  • Исправление типа template_folder для принятия pathlib.Path. #4892
  • Добавление опции --debug к команде flask run. #4777

Версия 2.2.2

Выпущено 2022-08-08

  • Обновление зависимости Werkzeug до >= 2.2.2. Это включает исправления, связанные с новым более быстрым маршрутизатором, парсингом заголовков и сервером разработки. #4754
  • Исправление значения по умолчанию для app.env на "production". Этот атрибут остаётся устаревшим. #4740

Версия 2.2.1

Выпущено 2022-08-03

  • Установка или доступ к json_encoder или json_decoder вызывает предупреждение об устаревании. #4732
END_OF_DOCUMENT_MARKER

Версия 2.2.0

Выпущено 2022-08-01

  • Удален ранее устаревший код. #4667

    • Старые имена некоторых send_file параметров были удалены. download_name заменяет attachment_filename, max_age заменяет cache_timeout, и etag заменяет add_etags. Кроме того, path заменяет filename в send_from_directory.
    • Свойство RequestContext.g, возвращающее AppContext.g, удалено.
  • Обновление зависимости Werkzeug до >= 2.2.
  • Контексты приложения и запроса управляются напрямую с помощью контекстных переменных Python, а не с помощью LocalStack Werkzeug. Это должно привести к лучшей производительности и использованию памяти. #4682

    • Авторы расширений, имейте в виду, что _app_ctx_stack.top и _request_ctx_stack.top устарели. Храните данные в g вместо этого, используя уникальный префикс, например g._extension_name_attr.
  • Переменная окружения FLASK_ENV и атрибут app.env устарели, устраняя различие между режимами разработки и отладки. Режим отладки должен управляться напрямую с помощью параметра --debug или app.run(debug=True). #4714
  • Некоторые атрибуты, которые проксировали ключи конфигурации в app , устарели: session_cookie_name, send_file_max_age_default, use_x_sendfile, propagate_exceptions, и templates_auto_reload. Используйте соответствующие ключи конфигурации вместо этого. #4716
  • Добавлены новые точки настройки в объект приложения Flask для многих ранее глобальных поведений.

    • flask.url_for будет вызывать app.url_for. #4568
    • flask.abort будет вызывать app.aborter. Flask.aborter_class и Flask.make_aborter могут использоваться для настройки этого отменяющего действия. #4567
    • flask.redirect будет вызывать app.redirect. #4569
    • flask.json является экземпляром JSONProvider. Можно установить другой поставщик для использования другой библиотеки JSON. flask.jsonify будет вызывать app.json.response, другие функции в flask.json будут вызывать соответствующие функции в app.json. #4692
  • Конфигурация JSON перемещена в атрибуты по умолчанию app.json поставщика. JSON_AS_ASCII, JSON_SORT_KEYS, JSONIFY_MIMETYPE, и JSONIFY_PRETTYPRINT_REGULAR устарели. #4692
  • Установка пользовательских классов json_encoder и json_decoder в приложении или макете, а также соответствующих классов json.JSONEncoder и JSONDecoder устарели. Теперь поведение JSON можно переопределить с помощью интерфейса поставщика app.json. #4692
  • json.htmlsafe_dumps и json.htmlsafe_dump устарели, теперь функция встроена в Jinja. #4692
  • Рефакторинг register_error_handler для консолидации проверки ошибок. Переписаны некоторые сообщения об ошибках, чтобы они были более согласованными. #4559
  • Использование декораторов и функций Blueprint, предназначенных для настройки после регистрации макета, приведет к отображению предупреждения. В следующей версии это станет ошибкой, как и методы настройки приложения. #4571
  • before_first_request устарел. Выполняйте код настройки при создании приложения вместо этого. #4605
  • Добавлен атрибут класса View.init_every_request. Если подкласс представления устанавливает его в False, представление не будет создавать новый экземпляр при каждом запросе. #2520.
  • Группа Click flask.cli.FlaskGroup может быть вложена как подкоманда в пользовательский CLI. #3263
  • Добавлены параметры --app и --debug к CLI flask, вместо того, чтобы требовать их установки через переменные окружения. #2836
  • Добавлен параметр --env-file к CLI flask. Это позволяет указать файл dotenv для загрузки дополнительно к .env и .flaskenv. #3108
  • Больше нет необходимости декорировать пользовательские команды CLI в app.cli или blueprint.cli с @with_appcontext, контекст приложения уже будет активен на этом этапе. #2410
  • SessionInterface.get_expiration_time использует значение с учетом часового пояса. #4645
  • Функции представления могут напрямую возвращать генераторы вместо обертывания их в Response. #4629
  • Добавлены функции stream_template и stream_template_string для рендеринга шаблона как потока фрагментов. #4629
  • Новая реализация сохранения контекста во время отладки и тестирования. #4666

    • request, g, и другие локальные переменные контекста указывают на правильные данные при выполнении кода в консоли интерактивного отладчика. #2836
    • Функции завершения всегда выполняются в конце запроса, даже если контекст сохранён. Они также выполняются после извлечения сохранённого контекста.
    • stream_with_context сохраняет контекст отдельно от блока with client. Он будет очищен при вызове response.get_data() или response.close().
  • Разрешено возвращать список из функции представления, для преобразования его в JSON-ответ, как и словарь. #4672
  • При проверке типов разрешено возвращать TypedDict из функций представления. #4695
  • Удалены параметры --eager-loading/--lazy-loading из команды flask run. Приложение всегда загружается сразу при первом запуске, а затем загружается лениво при перезагрузке. Перезагрузчик всегда сразу выводит ошибки, но продолжает обслуживание. Удален внутренний middleware DispatchingApp используемый предыдущей реализацией. #4715

Версия 2.1.3

Выпущено 2022-07-13

  • Встроены некоторые необязательные импорты, которые используются только для определённых команд CLI. #4606
  • Смягчение анотаций типов для функций after_request. #4600
  • instance_path для пакетов пространств имён использует путь, наиболее близкий к импортированному подмодулю. #4610
  • Более понятное сообщение об ошибке при использовании render_template и render_template_string вне контекста приложения. #4693

Версия 2.1.2

Выпущено 2022-04-28

  • Исправление аннотации типов для json.loads, она принимает str или bytes. #4519
  • Параметры --cert и --key в flask run могут быть указаны в любом порядке. #4459

Версия 2.1.1

Выпущено 2022-03-30

  • Установлена минимально необходимая версия importlib_metadata 3.6.0, которая требуется в Python < 3.10. #4502
END_OF_DOCUMENT_MARKER

Версия 2.1.0

Выпущено 2022-03-28

  • Отказ от поддержки Python 3.6. #4335
  • Обновление зависимости Click до >= 8.0. #4008
  • Удаление ранее устаревшего кода. #4337

    • CLI не передает script_info функциям фабрики приложения.
    • config.from_json заменено на config.from_file(name, load=json.load).
    • Функции json больше не принимают параметр encoding.
    • safe_join удалено, используйте werkzeug.utils.safe_join вместо него.
    • total_seconds удалено, используйте timedelta.total_seconds вместо него.
    • Один и тот же blueprint не может быть зарегистрирован с одинаковым именем. Используйте name= при регистрации, чтобы указать уникальное имя.
    • Параметр as_tuple клиента тестирования удален. Используйте response.request.environ вместо него. #4417
  • Некоторые параметры в send_file и send_from_directory были переименованы в 2.0. Срок устаревания старых имён продлён до 2.2. Обязательно протестируйте с видимыми предупреждениями об устаревании.

    • attachment_filename переименовано в download_name.
    • cache_timeout переименовано в max_age.
    • add_etags переименовано в etag.
    • filename переименовано в path.
  • Свойство RequestContext.g устарело. Используйте g напрямую или AppContext.g вместо него. #3898
  • copy_current_request_context может декорировать асинхронные функции. #4303
  • CLI использует importlib.metadata вместо pkg_resources для загрузки точек входа команд. #4419
  • Переопределение FlaskClient.open не вызовет ошибки при перенаправлении. #3396
  • Добавлен параметр --exclude-patterns к команде CLI flask run для указания шаблонов, которые будут игнорироваться релоадером. #4188
  • При использовании леничной загрузки (по умолчанию с отладчиком), контекст Click из команды flask run остаётся доступным в потоке загрузчика. #4460
  • Удаление куки сессии использует флаг httponly. #4485
  • Смягчение типизации для errorhandler для того, чтобы позволить пользователю использовать более точные типы и декорировать одну и ту же функцию несколько раз. #4095, #4295, #4297
  • Исправление типизации для методов __exit__ для лучшей совместимости с ExitStack. #4474
  • Из Werkzeug, для ответов перенаправления заголовок Location URL по умолчанию остаётся относительным и исключает схему и домен. #4496
  • Добавьте Config.from_prefixed_env() для загрузки значений конфигурации из переменных среды, начинающихся с FLASK_ или другого префикса. По умолчанию парсит значения как JSON и позволяет устанавливать ключи в вложенных словарях. #4479

Версия 2.0.3

Выпущено 2022-02-14

  • Параметр as_tuple клиента тестирования устарел и будет удалён в Werkzeug 2.1. Теперь он также устарел в Flask, будет удалён в Flask 2.1, оставаясь совместимым с обоими в 2.0.x. Используйте response.request.environ вместо него. #4341
  • Исправление аннотации типа для декоратора errorhandler. #4295
  • Отмена изменения в CLI, которое приводило к скрытию ImportError отслеживаний при импорте приложения. #4307
  • app.json_encoder и json_decoder передаются только в dumps и loads, если они имеют пользовательское поведение. Это повышает производительность, особенно на PyPy. #4349
  • Более понятное сообщение об ошибке, когда after_this_request используется вне контекста запроса. #4333

Версия 2.0.2

Выпущено 2021-10-04

  • Исправление аннотации типа для методов teardown_*. #4093
  • Исправление аннотации типа для декораторов before_request и before_app_request. #4104
  • Исправлена проблема, где типизация требует, чтобы глобальные декораторы шаблонов принимали функции без аргументов. #4098
  • Поддержка экземпляров View и MethodView с асинхронными обработчиками. #4112
  • Улучшение типизации декоратора app.errorhandler. #4095
  • Исправление регистрации blueprint дважды с разными именами. #4124
  • Исправление типа static_folder для принятия pathlib.Path. #4150
  • jsonify обрабатывает decimal.Decimal путем кодирования в str. #4157
  • Правильная обработка поднятия отложенных ошибок в CLI леничной загрузке. #4096
  • Загрузчик CLI обрабатывает **kwargs в функции create_app. #4170
  • Исправление порядка before_request и других колбэков, которые запускаются до возвращения представления. Они вызываются сверху вниз от приложения до ближайшего вложенного blueprint. #4229

Версия 2.0.1

Выпущено 2021-05-21

  • Добавление параметра filename в send_from_directory. Параметр filename переименован в path, старое имя устарело. #4019
  • Пометка имён верхнего уровня как экспортируемых, чтобы проверка типов понимала импорты в пользовательских проектах. #4024
  • Исправление аннотации типа для g и информирование mypy, что это объект пространства имён, имеющий произвольные атрибуты. #4020
  • Исправление некоторых типов, которые отсутствовали в Python 3.6.0. #4040
  • Улучшение типизации send_file, send_from_directory, и get_send_file_max_age. #4044, #4026
  • Вывод ошибки при наличии точки в имени blueprint. . имеет специальное значение, оно используется для разделения (вложенных) имён blueprint и имени конечной точки. #4041
  • Объединение префиксов URL при вложении blueprints, созданных с url_prefix значением. #4037
  • Возврат к порядку сопоставления URL. URL снова сопоставляется после загрузки сессии, поэтому сессия доступна в пользовательских преобразователях URL. #4053
  • Возвращение устаревшего Config.from_json, который был случайно удалён ранее. #4078
  • Улучшение типизации некоторых функций, использующих Callable в их сигнатурах типов, с фокусом на фабриках декораторов. #4060
  • Вложенные blueprints регистрируются с их имённым значением с точкой. Это позволяет использовать разные blueprints с одинаковым именем, вложенные в разных местах. #4069
  • register_blueprint принимает параметр name для изменения (предварительного с точкой) имени, с которым регистрируется blueprint. Это позволяет регистрировать один и тот же blueprint несколько раз с уникальными именами для url_for. Не рекомендуется регистрировать один и тот же blueprint с одинаковым именем несколько раз. #1091
  • Улучшение типизации stream_with_context. #4052
END_OF_DOCUMENT_MARKER

Версия 2.0.0

Выпущено 2021-05-11

  • Прекращено поддержка Python 2 и 3.5.
  • Повышены минимальные версии других проектов Pallets: Werkzeug >= 2, Jinja2 >= 3, MarkupSafe >= 2, ItsDangerous >= 2, Click >= 8. Обязательно ознакомьтесь с журналом изменений каждого проекта. Для лучшей совместимости с другими приложениями (например, Celery), которые по-прежнему требуют Click 7, жёсткой зависимости от Click 8 пока нет, но использование Click 7 будет вызывать DeprecationWarning, а Flask 2.1 будет зависеть от Click 8.
  • Поддержка JSON больше не использует simplejson. Для использования другого модуля JSON переопределите app.json_encoder и json_decoder. #3555
  • Опция encoding для функций JSON устарела. #3562
  • Передача script_info функциям фабрик приложений устарела. Это не было переносимо за пределами команды flask. Используйте click.get_current_context().obj, если это необходимо. #3552
  • CLI отображает более информативные сообщения об ошибках при неудачной загрузке приложения при поиске команд. #2741
  • Добавьте SessionInterface.get_cookie_name для динамического задания имени куки сессии. #3369
  • Добавьте Config.from_file для загрузки конфигурации с использованием произвольных загрузчиков файлов, таких как toml.load или json.load. Config.from_json устарела в пользу этого. #3398
  • Команда flask run будет откладывать ошибки только при перезагрузке. Ошибки, присутствующие во время первоначального вызова, приведут к немедленному завершению сервера с отладочной информацией. #3431
  • send_file выдает ValueError при передаче объекта io в текстовом режиме. Ранее он отвечал кодом 200 OK и пустым файлом. #3358
  • При использовании самодельных сертификатов проверяйте библиотеку cryptography вместо PyOpenSSL. #3492
  • При указании функции фабрики с FLASK_APP, можно передавать именованные аргументы. #3553
  • При загрузке файла .env или .flaskenv, текущая рабочая директория больше не изменяется на расположение файла. #3560
  • При возвращении кортежа (response, headers) из представления, заголовки заменяют, а не расширяют существующие заголовки ответа. Например, это позволяет задать Content-Type для jsonify(). Используйте response.headers.extend(), если нужно расширение. #3628
  • Класс Scaffold предоставляет общий API для классов Flask и Blueprint. Информация Blueprint хранится в атрибутах, как и Flask, а не в неявных лямбда-функциях. Это предназначено для повышения согласованности и поддерживаемости. #3215
  • Включите параметры samesite и secure при удалении куки сессии. #3726
  • Поддержка передачи pathlib.Path в static_folder. #3579
  • send_file и send_from_directory являются обёртками над реализациями в werkzeug.utils. #3828
  • Некоторые параметры send_file были переименованы, старые имена устарели. attachment_filename переименован в download_name. cache_timeout переименован в max_age. add_etags переименован в etag. #3828, #3883
  • send_file передает download_name даже если as_attachment=False с использованием Content-Disposition: inline. #3828
  • send_file устанавливает conditional=True и max_age=None по умолчанию. Cache-Control устанавливается в no-cache, если max_age не задано, в противном случае public. Это сообщает браузерам проверять условные запросы вместо использования кэша с таймерами. #3828
  • helpers.safe_join устарело. Используйте werkzeug.utils.safe_join вместо него. #3828
  • Контекст запроса выполняет сопоставление маршрутов до открытия сессии. Это может позволить интерфейсу сессии изменить поведение в зависимости от request.endpoint. #3776
  • Используйте реализацию Jinja фильтра |tojson. #3881
  • Добавлены декораторы маршрутов для распространённых HTTP-методов. Например, @app.post("/login") — это сокращение для @app.route("/login", methods=["POST"]). #3907
  • Поддержка асинхронных представлений, обработчиков ошибок, функций перед и после запроса, и функций разборки. #3412
  • Поддержка вложенных blueprints. #593, #1548, #3923
  • Установите кодировку по умолчанию в «UTF-8» при загрузке файлов .env и .flaskenv для возможности использования символов, не входящих в ASCII. #3931
  • flask shell настраивает автодополнение вкладок и истории, как в стандартной оболочке python, если readline установлена. #3941
  • helpers.total_seconds() устарело. Используйте timedelta.total_seconds() вместо него. #3962
  • Добавлена подсказка типов. #3973.

Версия 1.1.4

Выпущено 2021-05-13

  • Обновление static_folder для использования _compat.fspath вместо os.fspath для продолжения поддержки Python < 3.6 #4050

Версия 1.1.3

Выпущено 2021-05-13

  • Установлены максимальные версии Werkzeug, Jinja, Click и ItsDangerous. #4043
  • Добавлена поддержка передачи pathlib.Path для static_folder. #3579

Версия 1.1.2

Выпущено 2020-04-03

  • Решение проблемы при запуске команды flask с внешним отладчиком в Windows. #3297
  • Маршрут статики не перехватывает все URL, если параметр Flask static_folder оканчивается на слеш. #3452

Версия 1.1.1

Выпущено 2019-07-08

  • Флаг flask.json_available был добавлен обратно для совместимости с некоторыми расширениями. При использовании будет выведено предупреждение о устаревании, и он будет удален в версии 2.0.0. #3288
END_OF_DOCUMENT_MARKER

Версия 1.1.0

Выпущено 2019-07-04

  • Увеличение минимальной версии Werkzeug до >= 0.15.
  • Отказ от поддержки Python 3.4.
  • Обработчики ошибок для InternalServerError или 500 всегда будут получать экземпляр InternalServerError. Если они вызваны из-за необработанного исключения, то исходное исключение теперь доступно как e.original_exception вместо того, чтобы передаваться напрямую обработчику. То же самое относится и к обработчику для базового HTTPException. Это делает поведение обработчика ошибок более согласованным. #3266

    • Flask.finalize_request вызывается для всех необработанных исключений, даже если нет обработчика ошибок 500.
  • Flask.logger принимает то же имя, что и Flask.name (значение, переданное как Flask(import_name). Это возвращает поведение 1.0, при котором логирование всегда происходит в "flask.app", чтобы поддерживать несколько приложений в одном процессе. Будет показано предупреждение, если будет обнаружено старое конфигурирование, которое нужно перенести. #2866
  • RequestContext.copy включает текущий объект сессии в копию контекста запроса. Это предотвращает, чтобы session указывал на устаревший объект. #2935
  • Использование встроенного RequestContext, непечатаемые символы Unicode в заголовке Host приведут к HTTP-ответам 400, а не HTTP 500, как раньше. #2994
  • send_file поддерживает объекты PathLike, как описано в PEP 519, чтобы поддержать pathlib в Python 3. #3059
  • send_file поддерживает частичный контент BytesIO. #2957
  • open_resource принимает режим файла “rt”. Это все еще делает то же самое, что и “r”. #3163
  • Атрибут MethodView.methods, установленный в базовом классе, используется подклассами. #3138
  • Flask.jinja_options является dict, а не ImmutableDict, чтобы упростить конфигурацию. Изменения все равно должны быть внесены до создания среды. #3190
  • Фласк JSONMixin для обёрток запроса и ответа был перемещен в Werkzeug. Используйте версию Werkzeug с поддержкой Flask. Это увеличивает зависимость от Werkzeug до >= 0.15. #3125
  • Командная точка flask упрощена для использования улучшенной поддержки перезагрузчика Werkzeug 0.15. Это увеличивает зависимость от Werkzeug до >= 0.15. #3022
  • Поддержка static_url_path, заканчивающихся слешем. #3134
  • Поддержка пустого static_folder без необходимости задания пустого static_url_path. #3124
  • jsonify поддерживает объекты dataclass. #3195
  • Разрешение настройки Flask.url_map_class, используемого для маршрутизации. #3069
  • Порт сервера разработки может быть установлен в 0, что указывает ОС выбрать доступный порт. #2926
  • Значение возвращаемое cli.load_dotenv более согласуется с документацией. Оно вернёт False, если python-dotenv не установлен, или если заданный путь не является файлом. #2937
  • Поддержка сигнализации имеет заглушку для метода connect_via при отсутствии библиотеки Blinker. #3208
  • Добавление параметра --extra-files в командной строке flask run для указания дополнительных файлов, которые будут вызывать перезагрузчик при изменении. #2897
  • Разрешение возвращать словарь из функции представления. Аналогично тому, как возврат строки создает ответ text/html, возврат словаря вызовет jsonify для создания ответа application/json. #3111
  • У модулей Blueprints есть группа Click cli как app.cli. Команды CLI, зарегистрированные в модуле blueprints, будут доступны как группа под командой flask. #1357.
  • При использовании тестового клиента как контекстного менеджера (with client:), все сохранённые контексты запроса удаляются при выходе из блока, гарантируя правильную очистку вложенных контекстов. #3157
  • Показ лучшего сообщения об ошибке при неподдерживаемом типе возвращаемого значения представления. #3214
  • flask.testing.make_test_environ_builder() устарела в пользу нового класса flask.testing.EnvironBuilder. #3232
  • Команда flask run больше не терпит неудачу, если Python не был скомпилирован с поддержкой SSL. Использование опции --cert покажет соответствующее сообщение об ошибке. #3211
  • Сопоставление URL теперь происходит после помещения контекста запроса, а не при его создании. Это позволяет пользовательским преобразователям URL получить доступ к контекстам приложения и запроса, например, для запроса к базе данных по идентификатору. #3088

Версия 1.0.4

Выпущено 2019-07-04

  • Ключевая информация для BadRequestKeyError больше не очищается вне режима отладки, поэтому обработчики ошибок всё ещё могут к ней обратиться. Это требует обновления до Werkzeug 0.15.5. #3249
  • send_file приводит к экранированию символов “:” и “/” для большей совместимости с UTF-8 поддержкой имён файлов в некоторых браузерах. #3074
  • Исправления для PEP 451 загрузчиков импорта и pytest 5.x. #3275
  • Показать сообщение о dotenv в stderr вместо stdout. #3285

Версия 1.0.3

Выпущено 2019-05-17

  • send_file кодирует имена файлов как ASCII вместо Latin-1 (ISO-8859-1). Это исправляет совместимость с Gunicorn, который более строго относится к кодировкам заголовков, чем PEP 3333. #2766
  • Разрешение пользовательских командных строк с использованием FlaskGroup для установки флага отладки без его перезаписи на основе переменных среды. #2765
  • flask --version выводит версию Werkzeug и упрощает вывод версии Python. #2825
  • send_file обрабатывает attachment_filename, являющееся строкой Python 2 (байты) с кодированными байтами UTF-8. #2933
  • Всеобъемлющий обработчик ошибок, зарегистрированный для HTTPException, не будет обрабатывать RoutingException, который используется внутри во время маршрутизации. Это исправляет неожиданное поведение, возникшее в версии 1.0. #2986
  • Передача аргумента json к app.test_client не помещает/удаляет дополнительный контекст приложения. #2900

Версия 1.0.2

Выпущено 2018-05-02

  • Исправление более обратных несовместимостей при слиянии слешей между префиксом модуля blueprints и маршрутом. #2748
  • Исправление ошибки с командой flask routes при отсутствии маршрутов. #2751

Версия 1.0.1

Выпущено 2018-04-29

  • Исправление регистрации частичных элементов (без __name__) как функций представления. #2730
  • Список, возвращённый из функции представления, не обрабатывается так же, как кортеж. Только кортежи интерпретируются как данные ответа. #2736
  • Дополнительные слеши между префиксом blueprints и маршрутом URL объединяются. Это исправляет некоторые обратные несовместимости с изменениями в версии 1.0. #2731, #2742
  • Перехватывать только BadRequestKeyError ошибки в режиме отладки, а не все BadRequest ошибки. Это позволяет abort(400) продолжать работать как ожидается. #2735
  • Переменная среды FLASK_SKIP_DOTENV может быть установлена в значение 1 чтобы пропустить автоматическую загрузку файлов dotenv. #2722
END_OF_DOCUMENT_MARKER

Версия 1.0

Выпущено 2018-04-26

  • Python 2.6 и 3.3 больше не поддерживаются.
  • Повышение минимальных версий зависимостей до последних стабильных версий: Werkzeug >= 0.14, Jinja >= 2.10, itsdangerous >= 0.24, Click >= 5.1. #2586
  • Пропуск app.run при запуске приложения Flask из командной строки. Это предотвращает некоторые проблемы, которые сложно было отладить.
  • Изменение значения по умолчанию для JSONIFY_PRETTYPRINT_REGULAR на False. ~json.jsonify по умолчанию возвращает компактный формат, а в режиме отладки — отформатированный с отступами. #2193
  • Flask.__init__ принимает аргумент host_matching и устанавливает его в Flask.url_map. #1559
  • Flask.__init__ принимает аргумент static_host и передает его как аргумент host при определении статического маршрута. #1559
  • send_file поддерживает Unicode в attachment_filename. #2223
  • Передача аргумента _scheme из url_for в Flask.handle_url_build_error. #2017
  • Flask.add_url_rule принимает аргумент provide_automatic_options для отключения добавления метода OPTIONS. #1489
  • MethodView подклассы наследуют обработчики методов от базовых классов. #1936
  • Ошибки, возникающие при открытии сессии в начале запроса, обрабатываются обработчиками ошибок приложения. #2254
  • В blueprints появились атрибуты Blueprint.json_encoder и Blueprint.json_decoder для переопределения кодировщика и декодировщика приложения. #1898
  • Flask.make_response выдает TypeError вместо ValueError для неправильных типов ответов. Сообщения об ошибках были улучшены, чтобы описать, почему тип некорректен. #2256
  • Добавление команды routes командной строки для вывода зарегистрированных маршрутов приложения. #2259
  • Отображение предупреждения, когда домен cookie сессии — это просто имя хоста или IP-адрес, так как они могут работать некорректно в некоторых браузерах, таких как Chrome. #2282
  • Разрешение IP-адреса как точного домена cookie сессии. #2282
  • SESSION_COOKIE_DOMAIN устанавливается, если он обнаружен через SERVER_NAME. #2282
  • Автоматическое обнаружение фабрики приложения без аргументов, называемой create_app или make_app из FLASK_APP. #2297
  • Функции-фабрики не обязаны принимать параметр script_info для работы с командой flask. Если они принимают один параметр или параметр с именем script_info, объект ScriptInfo будет передан. #2319
  • FLASK_APP может быть установлен на фабрику приложения, с аргументами при необходимости, например, FLASK_APP=myproject.app:create_app('dev'). #2326
  • FLASK_APP может указывать на локальные пакеты, которые не установлены в режиме редактирования, хотя pip install -e по-прежнему предпочтительнее. #2414
  • Атрибут класса View View.provide_automatic_options устанавливается в View.as_view, чтобы быть обнаруженным Flask.add_url_rule. #2316
  • Обработка ошибок будет пытаться использовать обработчики, зарегистрированные для blueprint, code, app, code, blueprint, exception, app, exception. #2314
  • Cookie добавляется в заголовок ответа Vary приложения, если к сессии обращаются во время запроса (и она не удалена). #2288
  • Flask.test_request_context принимает аргументы subdomain и url_scheme для использования при построении базового URL. #1621
  • Установлено значение APPLICATION_ROOT по умолчанию '/'. Это уже было неявным значением по умолчанию, когда оно было установлено в None.
  • TRAP_BAD_REQUEST_ERRORS включено по умолчанию в режиме отладки. BadRequestKeyError содержит сообщение с неверным ключом в режиме отладки вместо стандартного сообщения об ошибке неправильного запроса. #2348
  • Разрешено регистрировать новые теги с помощью TaggedJSONSerializer для поддержки хранения других типов в cookie сессии. #2352
  • Открыть сессию только в том случае, если запрос еще не был добавлен в стек контекста. Это позволяет stream_with_context генераторам получить доступ к той же сессии, которую использует содержащий представление. #2354
  • Добавление ключевого аргумента json для методов запроса тестового клиента. Это позволит преобразовать заданный объект в JSON и установить соответствующий тип содержимого. #2358
  • Вынесение обработки JSON в миксин, примененный к классам Request и Response. Это добавляет методы Response.is_json и Response.get_json в ответ, что значительно упрощает тестирование JSON-ответов. #2358
  • Удалена кэширование обработчиков ошибок, так как это приводило к неожиданным результатам для некоторых иерархий наследования исключений. Зарегистрируйте обработчики явно для каждого исключения, если хотите избежать обхода MRO. #2362
  • Исправлена некорректная кодировка JSON для объектов с часовыми поясами, не являющихся UTC, датами. #2374
  • Автоперезагрузка шаблонов будет учитывать режим отладки, даже если Flask.jinja_env уже был использован. #2373
  • Были удалены следующие устаревшие фрагменты кода. #2385

    • flask.ext — импорт расширений напрямую по их имени вместо пространства имен flask.ext. Например, import flask.ext.sqlalchemy становится import flask_sqlalchemy.
    • Flask.init_jinja_globals — расширяйте Flask.create_jinja_environment вместо этого.
    • Flask.error_handlers — отслеживается Flask.error_handler_spec, используйте Flask.errorhandler для регистрации обработчиков.
    • Flask.request_globals_class — используйте Flask.app_ctx_globals_class вместо этого.
    • Flask.static_path — используйте Flask.static_url_path вместо этого.
    • Request.module — используйте Request.blueprint вместо этого.
  • Свойство Request.json больше не устарело. #1421
  • Поддержка передачи EnvironBuilder или dict в test_client.open. #2412
  • Команда flask и Flask.run будут загружать переменные окружения из файлов .env и .flaskenv, если установлен python-dotenv. #2416
  • При передаче полного URL в тестовый клиент используется схема в URL вместо PREFERRED_URL_SCHEME. #2430
  • Flask.logger был упрощен. Конфигурации LOGGER_NAME и LOGGER_HANDLER_POLICY были удалены. Дневник всегда имеет имя flask.app. Уровень устанавливается только при первом обращении, проверка Flask.debug не производится каждый раз. Используется только один формат, а не разные в зависимости от Flask.debug. Обработчики не удаляются, а обработчик добавляется только если обработчики уже не настроены. #2436
  • Имена функций представления Blueprint не могут содержать точки. #2450
  • Исправлена ошибка ValueError, вызванная некорректными запросами Range в некоторых случаях. #2526
  • Сервер разработки по умолчанию использует потоки. #2529
  • Загрузка конфигурационных файлов с помощью silent=True игнорирует ошибки ENOTDIR. #2581
  • Передача опций --cert и --key в flask run для запуска сервера разработки по протоколу HTTPS. #2606
  • Добавление SESSION_COOKIE_SAMESITE для управления атрибутом SameSite в cookie сессии. #2607
  • Добавление Flask.test_cli_runner для создания Click-раннера, который может вызывать команды Flask CLI для тестирования. #2636
  • Сопоставление по поддомену отключено по умолчанию, и установка SERVER_NAME не подразумевает его включение. Его можно включить, передав subdomain_matching=True конструктору Flask. #2635
END_OF_DOCUMENT_MARKER
  • Один конечный слеш удаляется из чертежа url_prefix при его регистрации в приложении. #2629
  • Request.get_json не кэширует результат, если при разборе произошла ошибка, когда silent имеет значение true. #2651
  • Request.get_json больше не принимает произвольные кодировки. Входящий JSON должен быть закодирован с использованием UTF-8 в соответствии с RFC 8259, но Flask автоматически распознает UTF-8, -16 или -32. #2691
  • Добавлены MAX_COOKIE_SIZE и Response.max_cookie_size для управления моментами, когда Werkzeug предупреждает о больших куках, которые браузеры могут игнорировать. #2693
  • Тема документации обновлена, чтобы документы выглядели лучше в маленьких окнах. #2709
  • Документация руководства и примерный проект переписаны, чтобы помочь новым пользователям избежать распространённых ошибок, с использованием более структурированного подхода. #2676

Версия 0.12.5

Выпущено 2020-02-10

  • Закрепить Werkzeug до < 1.0.0. #3497

Версия 0.12.4

Выпущено 2018-04-29

  • Переупаковать 0.12.3 для исправления проблемы с расположением пакета. #2728

Версия 0.12.3

Выпущено 2018-04-26

  • Request.get_json больше не принимает произвольные кодировки. Входящий JSON должен быть закодирован с использованием UTF-8 в соответствии с RFC 8259, но Flask автоматически распознает UTF-8, -16 или -32. #2692
  • Исправить предупреждение Python об импортах при использовании python -m flask. #2666
  • Исправить ValueError, вызванный недействительными Range запросами в некоторых случаях.

Версия 0.12.2

Выпущено 2017-05-16

  • Исправить ошибку в safe_join в Windows.

Версия 0.12.1

Выпущено 2017-03-31

  • Предотвратить отображение NoAppException у flask run при возникновении ImportError внутри импортированного модуля приложения.
  • Исправить поведение кодировки app.config.from_pyfile для Python 3. #2118
  • Использовать конфигурацию SERVER_NAME в качестве значений по умолчанию для app.run, если она присутствует. #2109, #2152
  • Вызвать ctx.auto_pop с объектом исключения вместо None, в случае возникновения BaseException (например, KeyboardInterrupt) в обработчике запроса.

Версия 0.12

Выпущено 2016-12-21, кодовое название Punsch

  • Команда cli теперь отвечает на --version.
  • Угадавание MIME-типа и генерация ETag для объектов типа файл в send_file удалены. #104, :pr`1849`
  • Угадавание MIME-типа в send_file теперь приводит к громкому ошибке и не использует application/octet-stream в качестве резервного варианта. #1988
  • Сделать flask.safe_join способным объединять несколько путей, например, os.path.join. #1730
  • Отменить изменение поведения, которое приводило к ошибке сервера разработки вместо возврата «Внутренняя ошибка сервера». #2006
  • Правильно вызывать обработчики ответов как для обычного распределения запросов, так и для обработчиков ошибок.
  • По умолчанию отключить распространение логгера для логгера приложения.
  • Добавить поддержку запросов диапазона в send_file.
  • app.test_client включает предопределённую среду по умолчанию, которую теперь можно напрямую установить, а не по client.get.
  • Исправить сбой при запуске под PyPy3. #1814

Версия 0.11.1

Выпущено 2016-06-07

  • Исправлена ошибка, которая препятствовала работе FLASK_APP=foobar/__init__.py. #1872
END_OF_DOCUMENT_MARKER

Версия 0.11

Выпущено 2016-05-29, кодовое имя Absinthe

  • Добавлена поддержка сериализации массивов верхнего уровня в jsonify. Это вводит риск безопасности в старых браузерах.
  • Добавлен сигнал before_render_template.
  • Добавлен **kwargs в Flask.test_client для поддержки передачи дополнительных ключевых аргументов в конструктор Flask.test_client_class.
  • Добавлен параметр конфигурации SESSION_REFRESH_EACH_REQUEST, который управляет поведением set-cookie. Если установлено значение True, постоянная сессия будет обновляться при каждом запросе и срок ее действия будет продлён, если установлено значение False, то она будет модифицирована только если сессия фактически изменилась. Непостоянные сессии не затрагиваются этим и всегда истекают при закрытии окна браузера.
  • Поддержка Flask для пользовательских MIME-типов JSON для входящих данных.
  • Добавлена поддержка возвращения кортежей в виде (response, headers) из функции представления.
  • Добавлен Config.from_json.
  • Добавлен Flask.config_class.
  • Добавлен Config.get_namespace.
  • Шаблоны больше не перезагружаются автоматически вне режима отладки. Это можно настроить с помощью нового параметра конфигурации TEMPLATES_AUTO_RELOAD.
  • Добавлен обходной путь для ограничения в загрузчике пространства имен Python 3.3.
  • Добавлена поддержка явных корневых путей при использовании пакетов пространства имен Python 3.3.
  • Добавлены flask и модуль flask.cli для запуска локального сервера отладки через систему командной строки click. Это рекомендуется вместо старого метода flask.run(), так как он работает быстрее и надёжнее благодаря другому дизайну, а также заменяет Flask-Script.
  • Обработчики ошибок, соответствующие конкретным классам, теперь проверяются в первую очередь, что позволяет перехватывать исключения, которые являются подклассами исключений HTTP (в werkzeug.exceptions). Это позволяет автору расширения создавать исключения, которые по умолчанию приведут к ошибке HTTP по своему выбору, но могут быть перехвачены пользовательским обработчиком ошибок, если это необходимо.
  • Добавлен Config.from_mapping.
  • Flask теперь регистрирует журналы по умолчанию, даже если отладка отключена. Формат журнала теперь жёстко задан, но обработку журнала по умолчанию можно отключить через ключ конфигурации LOGGER_HANDLER_POLICY.
  • Удалена устаревшая функциональность модуля.
  • Добавлен флаг конфигурации EXPLAIN_TEMPLATE_LOADING который, при включении, указывает Flask как он находит шаблоны. Это должно помочь пользователям отлаживать, когда загружаются неправильные шаблоны.
  • Навязано обработку шаблонов blueprints в порядке их регистрации для загрузки шаблонов.
  • Тестовый набор перенесен в py.test.
  • Устарел request.json в пользу request.get_json().
  • Добавление определений разделителей "pretty" и "compressed" в методе jsonify(). Уменьшает размер JSON-ответа, когда JSONIFY_PRETTYPRINT_REGULAR=False путём удаления ненужных пробелов, включённых по умолчанию после разделителей.
  • JSON-ответы теперь завершаются символом новой строки, потому что это соглашение о том, что текстовые файлы UNIX заканчиваются новой строкой, и некоторые клиенты плохо справляются, когда эта новая строка отсутствует. #1262
  • Автоматически предоставляемый метод OPTIONS теперь правильно отключён, если пользователь зарегистрировал переопределяющее правило с версией с маленькой буквы options. #1288
  • flask.json.jsonify теперь поддерживает тип datetime.date. #1326
  • Не передавать информацию об исключении уже перехваченных исключений обработчикам завершения контекста. #1393
  • Разрешить пользовательские подклассы среды Jinja. #1422
  • Обновлены руководящие принципы разработки расширений.
  • flask.g теперь имеет методы pop() и setdefault.
  • Включить автоматическое экранирование для flask.templating.render_template_string по умолчанию. #1515
  • flask.ext теперь устарел. #1484
  • send_from_directory теперь вызывает BadRequest, если имя файла недействительно в операционной системе сервера. #1763
  • Добавлена переменная конфигурации JSONIFY_MIMETYPE. #1728
  • Исключения во время обработки завершения больше не оставляют плохих контекстов приложения, висящих вокруг.
  • Исправлен сломанный тестовый случай test_appcontext_signals().
  • Вызвать AttributeError в helpers.find_package с полезным сообщением, объясняющим, почему это происходит, когда используется крючок импорта PEP 302 без метода is_package().
  • Исправлена проблема, из-за которой исключения, поднятые до входа в контекст запроса или приложения, передавались обработчикам завершения.
  • Исправлена проблема с параметрами запроса, удаляемыми из запросов в тестовом клиенте, когда запрашивались абсолютные URL-адреса.
  • Превратил @before_first_request в декоратор, как предполагалось.
  • Исправлен баг etags при отправке потоков файлов с именем.
  • Исправлено send_from_directory не расширяется до корневого пути приложения правильно.
  • Изменена логика обработчиков перед первым запросом на изменение флага после вызова. Это позволит некоторым потенциально опасным, но, вероятно, допустимым, использованиям.
  • Исправлен баг Python 3, когда обработчик из app.url_build_error_handlers повторно поднимает BuildError.

Версия 0.10.1

Выпущено 2013-06-14

  • Исправлена проблема, из-за которой |tojson не цитировал одинарные кавычки, что делало фильтр неработоспособным в атрибутах HTML. Теперь этот фильтр можно использовать в атрибутах с одинарными кавычками. Это должно упростить использование этого фильтра с angular.js.
  • Добавлена поддержка байтовых строк обратно в систему сессий. Это нарушило совместимость с общим случаем, когда люди помещали двоичные данные для проверки токенов в сессию.
  • Исправлена проблема, из-за которой регистрация одного и того же метода дважды для одного и того же конечной точки неверно вызывала исключение.

Версия 0.10

Выпущено 2013-06-13, кодовое имя Limoncello

  • Изменён формат сериализации файлов cookie по умолчанию с pickle на JSON для ограничения последствий, которые злоумышленник может произвести, если секретный ключ утечёт.
  • Добавлены методы template_test в дополнение к уже существующей группе методов template_filter.
  • Добавлены методы template_global в дополнение к уже существующей группе методов template_filter.
  • Установлен заголовок content-length для x-sendfile.
  • Фильтр tojson теперь не экранирует блоки script в парсерах HTML5.
  • tojson в шаблонах теперь безопасны по умолчанию. Это было разрешено из-за разного поведения экранирования.
  • Flask теперь выдаёт ошибку, если вы попытаетесь зарегистрировать новую функцию на уже используемой конечной точке.
  • Добавлен модуль обёртки вокруг simplejson и добавлена по умолчанию сериализация объектов datetime. Это позволяет намного проще настраивать, как Flask или любое расширение Flask обрабатывает JSON.
  • Удален устаревший внутренний псевдоним модуля flask.session. Используйте flask.sessions вместо него, чтобы получить модуль сессии. Это не следует путать с прокси сессии flask.session.
  • Шаблоны теперь могут быть отображены без контекста запроса. Поведение немного отличается, так как объекты request, session и g не будут доступны, а обработчики контекста blueprints не вызываются.
  • Объект конфигурации теперь доступен шаблону как настоящий глобальный, а не через обработчик контекста, что делает его доступным даже в импортированных шаблонах по умолчанию.
  • Добавлена возможность генерировать JSON с кодировкой, отличной от ASCII, что должно привести к передаче меньшего объёма байтов по сети. По умолчанию эта возможность отключена, чтобы не вызвать путаницу с существующими библиотеками, которые могут ожидать, что flask.json.dumps возвращает байты по умолчанию.
  • flask.g теперь хранится в контексте приложения, а не в контексте запроса.
  • flask.g теперь получил метод get() для того чтобы не выдавать ошибки при отсутствии элементов.
  • flask.g теперь можно использовать с оператором in чтобы увидеть, что определено, и он теперь итерируемый и будет возвращать все сохранённые атрибуты.
  • flask.Flask.request_globals_class переименован в flask.Flask.app_ctx_globals_class , что является лучшим названием для того, что он делает с 0.10.
  • request, session и g также добавлены как прокси в контекст шаблона, что делает их доступными в импортированных шаблонах. Однако нужно быть очень осторожным с ними, так как использование вне макросов может привести к кешированию.
  • Flask больше не будет вызывать неправильные обработчики ошибок, если через него передаётся исключение-прокси.
  • Добавлен обходной путь для работы cookie Chrome в localhost не так, как задумывалось с именами доменов.
  • Изменена логика выбора значений по умолчанию для значений файлов cookie из сессий для лучшей работы с Google Chrome.
  • Добавлен сигнал message_flashed для упрощения тестирования всплывающих сообщений.
  • Добавлена поддержка копирования контекстов запроса для лучшей работы с greenlets.
  • Удалены пользовательские подклассы исключений HTTP JSON. Если вы полагались на них, вы можете снова ввести их сами тривиально. Однако использование их настоятельно не рекомендуется, так как интерфейс был ненадёжный.
  • Изменены требования к Python: теперь требуется Python 2.6 или 2.7 для подготовки к порту Python 3.3.
  • Изменено, как система завершения получает информацию об исключениях. Это более надёжно в случае, если что-то обрабатывает исключение на полпути процесса обработки ошибок.
  • Сохранение контекста запроса в режиме отладки теперь сохраняет информацию об исключении, что позволяет обработчикам завершения отличать случаи ошибок от успешных.
  • Добавлена переменная конфигурации JSONIFY_PRETTYPRINT_REGULAR.
  • Flask теперь упорядочивает ключи JSON по умолчанию, чтобы не сломать кэш HTTP из-за разных семян хеша между разными рабочими процессами.
  • Добавлены сигналы appcontext_pushed и appcontext_popped.
  • Встроенный метод run теперь учитывает SERVER_NAME при выборе порта по умолчанию для запуска.
  • Добавлен flask.request.get_json() в качестве замены старой свойства flask.request.json.

Версия 0.9

Выпущено 2012-07-01, кодовое имя Campari

  • Функция Request.on_json_loading_failed теперь по умолчанию возвращает ответ в формате JSON.
  • Функция url_for теперь может генерировать якоря для сгенерированных ссылок.
  • Функция url_for теперь также может явно генерировать правила URL, специфичные для данного HTTP-метода.
  • Логгер теперь возвращает только значение настройки отладки, если оно не было явно установлено.
  • При завершении запроса отключается циклическая зависимость между средой WSGI и объектом запроса. Это означает, что environ werkzeug.request будет None после возвращения ответа WSGI-серверу, но при этом сборщик мусора не нужен в CPython для разрушения запроса, если пользователь сам не создал циклические зависимости.
  • Сессия теперь сохраняется после обратных вызовов, так что если данные сессии хранятся в сессии, вы всё ещё можете их изменять в обратном вызове после обработки запроса.
  • Класс Flask будет избегать импорта указанного имени импорта, если сможет (требуемый первый параметр), чтобы помочь инструментам, которые программно создают экземпляры Flask. Класс Flask будет использовать импорт по умолчанию на системах с настраиваемыми обработчиками модулей, например, Google App Engine, или когда имя импорта находится внутри архива zip (обычно egg) до Python 2.7.
  • В шаблонах Blueprint теперь есть декоратор для добавления пользовательских фильтров шаблонов на уровне приложения, Blueprint.app_template_filter.
  • В классах Flask и Blueprint теперь есть метод без декоратора для добавления пользовательских фильтров шаблонов на уровне приложения, Flask.add_template_filter и Blueprint.add_app_template_filter.
  • Функция get_flashed_messages теперь позволяет рендерить категории сообщений с флешем в отдельных блоках через аргумент category_filter.
  • Метод Flask.run теперь принимает None для аргументов host и port, используя значения по умолчанию, когда None . Это позволяет вызывать run с использованием значений конфигурации, например, app.run(app.config.get('MYHOST'), app.config.get('MYPORT')), с правильным поведением независимо от того, предоставляется ли файл конфигурации.
  • Метод render_template теперь принимает либо итерируемый список имён шаблонов, либо одно имя шаблона. Ранее он принимал только одно имя шаблона. В случае итерируемого списка рендерится первый найденный шаблон.
  • Добавлен Flask.app_context, который работает очень похоже на контекст запроса, но предоставляет доступ только к текущему приложению. Это также добавляет поддержку генерации URL без активного контекста запроса.
  • Функции представления теперь могут возвращать кортеж, первым элементом которого является экземпляр Response. Это позволяет возвращать jsonify(error="error msg"), 400 из функции представления.
  • Flask и Blueprint теперь предоставляют хук get_send_file_max_age для подклассов, чтобы переопределить поведение обслуживания статических файлов из Flask при использовании Flask.send_static_file (используется для обработчика статических файлов по умолчанию) и helpers.send_file. Этот хук получает имя файла, что, например, позволяет изменять контроллеры кеша по расширению файла. Максимальное время хранения по умолчанию для send_file и статических файлов может быть настроено через новую переменную конфигурации SEND_FILE_MAX_AGE_DEFAULT, которая используется в реализации get_send_file_max_age по умолчанию.
  • Исправлена ошибка в реализации сессий, которая могла нарушить отображение сообщений в сессиях, использующих внешнее хранилище.
  • Изменено поведение кортежей, возвращаемых функциями. Они больше не являются аргументами объекта ответа, а теперь имеют определённый смысл.
  • Добавлен Flask.request_globals_class для использования определённого класса при создании экземпляра g каждого запроса.
  • Добавлен атрибут required_methods к функциям представлений, чтобы при регистрации автоматически добавлять методы.
  • Добавлен flask.after_this_request.
  • Добавлен flask.stream_with_context и возможность многократного подталкивания контекстов без неожиданного поведения.

Версия 0.8.1

Выпущено 2012-07-01

  • Исправлена проблема с недокументированным модулем flask.session, который не работал должным образом в Python 2.5. Его не следует использовать, но он вызвал некоторые проблемы для менеджеров пакетов.

Версия 0.8

Выпущено 2011-09-29, кодовое имя Rakija

  • Рефакторинг поддержки сессий в интерфейс сессий, чтобы реализацию сессий можно было изменить, не переопределяя класс Flask.
  • Пустые куки сессии теперь автоматически удаляются должным образом.
  • Функции представлений теперь могут отказаться от автоматической реализации OPTIONS.
  • HTTP-исключения и ошибки Bad Request теперь можно перехватывать, чтобы они нормально отображались в трассировке.
  • Flask в режиме отладки теперь обнаруживает некоторые распространённые проблемы и пытается предупредить вас об этом.
  • Flask в режиме отладки теперь будет жаловаться с ошибкой утверждения, если представление было прикреплено после обработки первого запроса. Это даёт более раннюю обратную связь, когда пользователи забывают импортировать код представления заранее.
  • Добавлена возможность регистрации обратных вызовов, которые срабатывают только один раз в начале первого запроса с помощью Flask.before_first_request.
  • Неправильные данные JSON теперь вызывают исключение Bad Request HTTP вместо ошибки значения, которая обычно приводила бы к ошибке 500 Internal Server Error, если не обработана. Это изменение несовместимо со старыми версиями.
  • Приложения теперь имеют не только корневой путь, где находятся ресурсы и модули, но также путь экземпляра, который является выделенным местом для файлов, изменяемых во время выполнения (загрузки и т. д.). Также это концептуально зависит только от экземпляра и находится вне контроля версий, поэтому это идеальное место для размещения файлов конфигурации и т. д.
  • Добавлена переменная конфигурации APPLICATION_ROOT.
  • Реализован TestClient.session_transaction для лёгкого изменения сессий из тестовой среды.
  • Рефакторинг тестового клиента внутренне. Переменные конфигурации APPLICATION_ROOT и SERVER_NAME теперь должным образом используются тестовым клиентом как значения по умолчанию.
  • Добавлен View.decorators для поддержки более простого декорирования подключаемых (классовых) представлений.
  • Исправлена проблема, когда тестовый клиент, если использовался с оператором «with», не запускал обработчики завершения.
  • Добавлен более тонкий контроль параметров куки сессии.
  • Запросы HEAD к представлению метода теперь автоматически перенаправляются на метод get если не реализован обработчик.
  • Реализован виртуальный пакет flask.ext для импорта расширений.
  • Сохранение контекста при исключениях теперь является неотъемлемой частью самого Flask, а не тестового клиента. Это упростило внутреннюю логику и уменьшило вероятность возникновения проблем с контекстами запросов в модульных тестах.
  • Исправлен метод list_templates среды Jinja2, который не возвращал правильные имена, когда участвовали шаблоны Blueprint или модули.

Версия 0.7.2

Выпущено 2011-07-06

  • Исправлена проблема с обработчиками URL, которые не работали должным образом с шаблонами Blueprint.

Версия 0.7.1

Выпущено 2011-06-29

  • Добавлен отсутствующий импорт future, который нарушал совместимость с 2.5.
  • Исправлена проблема с бесконечным перенаправлением с шаблонами Blueprint.

Версия 0.7

Выпущено 2011-06-28, кодовое имя Grappa

  • Добавлен Flask.make_default_options_response, который может использоваться подклассами для изменения стандартного поведения для ответов OPTIONS.
  • Несвязанные локальные переменные теперь вызывают правильное исключение RuntimeError вместо AttributeError.
  • Угадывание MIME-типов и поддержка etag на основе объектов файлов теперь устарели для send_file из-за ненадежности. Вместо этого передавайте имена файлов или прикрепляйте свои собственные etag и предоставьте правильный MIME-тип вручную.
  • Обработка статических файлов для модулей теперь требует явного указания имени папки с статическими файлами. Предыдущая автоматическая настройка не была надёжной и создавала проблемы в Google App Engine. До версии 1.0 старое поведение будет по-прежнему работать, но будут выведены предупреждения о зависимости.
  • Исправлена проблема с выполнением Flask на jython.
  • Добавлена переменная конфигурации PROPAGATE_EXCEPTIONS, которая может использоваться для изменения режима распространения исключений, который ранее зависел только от DEBUG, а теперь зависит от DEBUG или TESTING.
  • Flask больше не зависит от правил, добавленных через функцию add_url_rule, и теперь также может принимать обычные правила werkzeug, добавленные в карту URL.
  • Добавлен метод endpoint к объекту приложения Flask, который позволяет регистрировать обратный вызов на произвольный конечный пункт с помощью декоратора.
  • Для отправки статических файлов используется Last-Modified вместо Date, который был ошибочно введён в версии 0.6.
  • Добавлен create_jinja_loader для переопределения процесса создания загрузчика.
  • Реализован флаг silent для config.from_pyfile.
  • Добавлен декоратор teardown_request для функций, которые должны выполняться в конце запроса независимо от того, возникло ли исключение. Также изменено поведение для after_request — оно больше не выполняется при возникновении исключения.
  • Реализован has_request_context.
  • Устарела функция init_jinja_globals. Для достижения той же функциональности переопределите метод Flask.create_jinja_environment.
  • Добавлен safe_join.
  • Автоматическое распаковывание данных запроса в формате JSON теперь учитывает параметр charset MIME-типа.
  • Не изменяйте сессию в get_flashed_messages если в сессии нет сообщений.
  • before_request обработчики теперь могут прерывать запросы с ошибками.
  • Определять обработчики пользовательских исключений больше нельзя. Таким образом, можно предоставлять настраиваемые сообщения об ошибках из центрального узла для определённых ошибок, которые могут возникнуть при обработке запросов (например, ошибки подключения к базе данных, таймауты от удалённых ресурсов и т. д.).
  • Шаблоны Blueprint могут предоставлять обработчики ошибок, специфичные для шаблонов Blueprint.
  • Реализованы общие представления на основе классов.

Версия 0.6.1

Выпущено 2010-12-31

  • Исправлена проблема, когда стандартный ответ OPTIONS не отображал все допустимые методы в заголовке Allow.
  • Синтаксис загрузки шаблонов Jinja2 теперь допускает «./» перед путём загрузки шаблона. Ранее это создавало проблемы при настройке модулей.
  • Исправлена проблема, когда параметр поддомена для модулей игнорировался для папки со статическими файлами.
  • Исправлена проблема безопасности, которая позволяла клиентам загружать произвольные файлы, если хост-сервер был на базе Windows, а клиент использовал обратную косую черту для экранирования каталога, из которого файлы были доступны.
END_OF_DOCUMENT_MARKER

Версия 0.6

Выпущено 2010-07-27, кодовое имя Whisky

  • Функции по запросу теперь вызываются в обратном порядке регистрации.
  • OPTIONS теперь автоматически реализуется Flask, если приложение явно не добавляет «OPTIONS» в качестве метода к правилу URL. В этом случае автоматическая обработка OPTIONS не включается.
  • Статические правила теперь применяются даже если для модуля нет папки static. Это было реализовано для поддержки GAE, которая удалит папку static, если она является частью отображения в файле .yml.
  • Flask.config теперь доступно в шаблонах как config.
  • Обработчики контекста больше не будут перезаписывать значения, переданные непосредственно в функцию render.
  • Добавлена возможность ограничить данные входящего запроса с помощью нового параметра конфигурации MAX_CONTENT_LENGTH.
  • Конечная точка для метода Module.add_url_rule теперь является необязательной, чтобы соответствовать функции с таким же именем на объекте приложения.
  • Добавлена функция make_response, упрощающая создание экземпляров объектов ответа в представлениях.
  • Добавлена поддержка сигнализации на основе blinker. Эта функция в настоящее время является необязательной и предназначена для использования расширениями и приложениями. Если вы хотите ее использовать, убедитесь, что установлен blinker.
  • Переработан способ создания адаптеров URL. Этот процесс теперь полностью настраивается с помощью метода Flask.create_url_adapter.
  • Модули теперь могут регистрироваться для поддомена вместо просто префикса URL. Это позволяет привязать весь модуль к настраиваемому поддомену.

Версия 0.5.2

Выпущено 2010-07-15

  • Исправлена другая проблема с загрузкой шаблонов из каталогов при использовании модулей.

Версия 0.5.1

Выпущено 2010-07-06

  • Исправлена проблема с загрузкой шаблонов из каталогов при использовании модулей.

Версия 0.5

Выпущено 2010-07-06, кодовое имя Calvados

  • Исправлена ошибка с поддоменами, вызванная невозможностью указать имя сервера. Имя сервера теперь можно установить с помощью ключа конфигурации SERVER_NAME. Этот ключ теперь также используется для установки cookie сеанса на уровне нескольких поддоменов.
  • Автоэкранирование больше не активно для всех шаблонов. Вместо этого оно активно только для .html, .htm, .xml и .xhtml. Внутри шаблонов это поведение можно изменить с помощью тега autoescape.
  • Переработан Flask внутренне. Теперь он состоит из более чем одного файла.
  • send_file теперь генерирует etag и имеет встроенную возможность выполнять условные ответы.
  • (временно) прекращена поддержка архивированных приложений. Это была редко используемая функция и приводила к некоторым запутанным действиям.
  • Добавлена поддержка каталогов шаблонов и статических файлов на уровне пакетов.
  • Убрана поддержка create_jinja_loader, которая больше не используется в 0.5 из-за улучшенной поддержки модулей.
  • Добавлена вспомогательная функция для экспонирования файлов из любого каталога.

Версия 0.4

Выпущено 2010-06-18, кодовое имя Rakia

  • Добавлена возможность регистрации обработчиков ошибок на уровне приложения из модулей.
  • Flask.after_request обработчики теперь также вызываются, если запрос завершается с исключением и отображается страница обработки ошибок.
  • Тестовый клиент больше не имеет возможности сохранить контекст запроса на немного более длительное время. Это также можно использовать для запуска настраиваемых запросов, которые не удаляют стек запросов для тестирования.
  • Поскольку стандартная библиотека Python кэширует логгеры, имя логгера теперь настраиваемо, чтобы лучше поддерживать unit-тесты.
  • Добавлен переключатель TESTING, который может активировать вспомогательные средства unit-тестирования.
  • Логгер теперь переключается в режим DEBUG, если включен режим отладки.

Версия 0.3.1

Выпущено 2010-05-28

  • Исправлена ошибка сообщения об ошибке с Config.from_envvar.
  • Удален некоторый неиспользуемый код.
  • Выпуск больше не включает оставшиеся файлы разработки (.git папка для тем, созданная документация в zip и pdf файлах и некоторые .pyc файлы)

Версия 0.3

Выпущено 2010-05-28, кодовое имя Schnaps

  • Добавлена поддержка категорий для сообщений, отображаемых всплывающим сообщением.
  • Приложение теперь настраивает logging.Handler и будет регистрировать исключения обработки запросов в этом логгере, когда режим отладки выключен. Это позволяет, например, получать электронные письма об ошибках сервера.
  • Добавлена поддержка привязки контекста, которая не требует использования оператора with для работы в консоли.
  • Контекст запроса теперь доступен внутри оператора with, что позволяет далее продвигать контекст запроса или удалять его.
  • Добавлена поддержка конфигураций.

Версия 0.2

Выпущено 2010-05-12, кодовое имя J?germeister

  • Различные исправления ошибок
  • Встроенная поддержка JSON
  • Добавлена вспомогательная функция get_template_attribute.
  • Flask.add_url_rule теперь также может регистрировать функцию представления.
  • Переработана внутренняя диспетчеризация запросов.
  • Сервер теперь по умолчанию слушает на 127.0.0.1 для исправления проблем с Chrome.
  • Добавлена поддержка внешних URL.
  • Добавлена поддержка send_file.
  • Поддержка модулей и внутренняя обработка запросов переработаны для лучшей поддержки подключаемых приложений.
  • Сеансы теперь могут быть постоянными на основе каждого сеанса.
  • Улучшенное сообщение об ошибке при отсутствии секретных ключей.
  • Добавлена поддержка Google Appengine.

Версия 0.1

Выпущено 2010-04-16

  • Первый публичный предварительный выпуск.

© 2010 Pallets
Licensed under the BSD 3-clause License.
https://flask.palletsprojects.com/en/3.0.x/changes/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API