Spec-Zone.ru › Flask 2.3

Изменения

Версия 2.3.3

Не выпущена

  • Совместимость с Python 3.12.
  • Требуется Werkzeug >= 2.3.6.
  • Переработано определение корневого и экземпляра пути приложения. #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 для приложения и шаблонов, а также соответствующие классы json.JSONEncoder и JSONDecoder удалены.
    • Функции json.htmlsafe_dumps и htmlsafe_dump удалены.
    • Вызов методов настройки шаблонов после регистрации — это ошибка вместо предупреждения. #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
  • Обеспечьте применение поддоменов с вложенными шаблонами. #4834
  • config.from_file может использовать text=False для указания того, что парсеру нужен двоичный файл вместо этого. #4989
  • Если шаблон создается с пустым именем, генерируется 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
  • Использование декораторов и функций макета, предназначенных для настройки после регистрации макета, будет выводить предупреждение. В следующей версии это станет ошибкой, как и методы настройки приложения. #4571
  • before_first_request устарело. Выполняйте код настройки при создании приложения вместо этого. #4605
  • Добавлен атрибут класса View.init_every_request. Если подкласс представления устанавливает его в значение False, представление не будет создавать новый экземпляр на каждом запросе. #2520.
  • Группа Click flask.cli.FlaskGroup может быть вложена в качестве подкоманды в пользовательском интерфейсе командной строки. #3263
  • Добавление опций --app и --debug в интерфейс командной строки flask, вместо того, чтобы требовать их установки через переменные окружения. #2836
  • Добавление опции --env-file в интерфейс командной строки 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

  • Встраивание некоторых необязательных импортов, которые используются только для определённых команд интерфейса командной строки. #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 вместо setuptools, чтобы загружать точки входа команд. #4419
  • Переопределение FlaskClient.open не вызовет ошибку при перенаправлении. #3396
  • Добавлен параметр --exclude-patterns к команде CLI flask run, чтобы указать шаблоны, которые будут игнорироваться релоадером. #4188
  • При использовании ленивой загрузки (по умолчанию с отладчиком), контекст Click из команды flask run остаётся доступным в потоке загрузчика. #4460
  • Удаление cookie сессии использует флаг 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 для динамической установки имени cookie сессии. #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 при удалении cookie сессии. #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
  • Flask’s 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 CLI для указания дополнительных файлов, которые будут вызывать релоадер при изменении. #2897
  • Разрешить возвращение словаря из функции представления. Аналогично тому, как возвращение строки создаст ответ text/html, возвращение словаря вызовет jsonify для создания ответа application/json. #3111
  • Блоки имеют группу Click cli как app.cli. Команды CLI, зарегистрированные с помощью блока, будут доступны как группа под командой 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 url приводит в кавычки символы “:” и “/” для большей совместимости с 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
  • Разрешить пользовательские CLIs, используя 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

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

Версия 1.0.1

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

  • Исправлена регистрация частичных (без __name__) как функций представления. #2730
  • Списки, возвращаемые функциями представлений, больше не обрабатываются так же, как кортежи. Только кортежи интерпретируются как данные ответа. #2736
  • Дополнительные слэши между префиксом url_prefix блока и 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
  • Добавлена команда CLI routes для вывода зарегистрированных маршрутов в приложении. #2259
  • Выводится предупреждение, если домен cookie сессии — это просто имя хоста или IP-адрес, так как в некоторых браузерах, например, Chrome, это может работать неправильно.
  • Поддержка IP-адреса как точного домена cookie сессии.
  • SESSION_COOKIE_DOMAIN устанавливается, если это обнаружено через SERVER_NAME. #2282
  • Автоматическое определение фабрики приложения без аргументов, названной create_app или make_app из FLASK_APP. #2297
  • Функции-фабрики не обязаны принимать параметр script_info для работы с командой flask. Если они принимают единственный параметр или параметр с именем script_info, объект ScriptInfo будет передан. #2319
  • 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 и установить соответствующий тип контента.
  • Обработка JSON перенесена в миксин, применяемый к классам Request и Response. Это добавит методы Response.is_json и Response.get_json в ответ, что значительно упростит тестирование JSON-ответов. #2358
  • Отмена кэширования обработчиков ошибок, так как это приводило к неожиданным результатам для некоторых иерархий наследования исключений. Зарегистрируйте обработчики явно для каждого исключения, если хотите избежать обхода MRO.
  • Исправление некорректного кодирования JSON для явных, не UTC, дат.
  • Автоперезагрузка шаблонов будет учитывать режим отладки даже в том случае, если 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. Обработчики не удаляются, а добавляется обработчик только если обработчики уже не настроены.
  • Имена функций представления blueprints не должны содержать точки.
  • Исправление ошибки ValueError, вызванной некорректными запросами Range в некоторых случаях.
  • Сервер разработки использует потоки по умолчанию.
  • Загрузка файлов конфигурации с silent=True игнорирует ошибки ENOTDIR. #2581
  • Передача опций --cert и --key в flask run для запуска сервера разработки через HTTPS.
  • Добавлен SESSION_COOKIE_SAMESITE для управления атрибутом SameSite cookie сессии.
  • Добавлен Flask.test_cli_runner для создания Click-запускателя, который может вызывать команды Flask CLI для тестирования.
  • Сопоставление по поддоменам отключено по умолчанию, и установка SERVER_NAME не подразумевает его включение. Его можно включить, передав subdomain_matching=True в конструктор Flask.
  • Один обратный слэш удаляется из url_prefix blueprint при регистрации в приложении.
  • Request.get_json не кэширует результат, если разбор завершается ошибкой, когда silent равно true.
END_OF_DOCUMENT_MARKER
  • Request.get_json больше не принимает произвольные кодировки. Входящий JSON должен быть закодирован с использованием UTF-8 в соответствии с RFC 8259, но Flask будет автоматически определять UTF-8, -16 или -32. #2691
  • Добавлены MAX_COOKIE_SIZE и Response.max_cookie_size для управления предупреждениями Werkzeug о больших cookie, которые браузеры могут игнорировать. #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 для объектов типа file-like в send_file удалены. #104, :pr`1849`
  • Угадывание MIME-типов в send_file теперь завершается ошибкой и не использует application/octet-stream в качестве запасного варианта. #1988
  • Возможность для flask.safe_join объединять несколько путей, например os.path.join #1730
  • Откат изменения поведения, из-за которого сервер разработки аварийно завершал работу вместо возврата ошибки Internal Server Error. #2006
  • Правильное вызов обработчиков ответов как для обычной обработки запросов, так и для обработчиков ошибок.
  • Отключение распространения логгеров по умолчанию для логгера приложения.
  • Добавлена поддержка запросов диапазонов в send_file.
  • app.test_client включает предопределенную среду по умолчанию, которую теперь можно установить напрямую, а не по client.get.
  • Исправлена ошибка при работе под PyPy3. #1814

Версия 0.11.1

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

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

Версия 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 объяснить, как он находит шаблоны. Это должно помочь пользователям отладить, когда загружаются неправильные шаблоны.
  • Обеспечение обработки bluepring в порядке их регистрации для загрузки шаблонов.
  • Тестовый набор перенесен на 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.
END_OF_DOCUMENT_MARKER

Версия 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. Это позволяет значительно проще настраивать обработку JSON в Flask или любом расширении Flask.
  • Удален устаревший внутренний flask.session псевдоним модуля. Используйте flask.sessions вместо него для получения модуля сессий. Это не следует путать с flask.session, прокси сессии.
  • Шаблоны теперь можно отображать без контекста запроса. Поведение немного отличается, так как объекты request, session и g не будут доступны, и обработчики контекста blueprint не вызываются.
  • Объект конфигурации теперь доступен в шаблоне как настоящий глобальный, а не через обработчик контекста, что делает его доступным даже в импортированных шаблонах по умолчанию.
  • Добавлена возможность генерировать 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 больше не будет вызывать неправильные обработчики ошибок, если через него передаётся исключение прокси.
  • Добавлен обходной путь для работы куки Chrome в localhost не так, как предполагалось, с именами доменов.
  • Изменёна логика выбора значений по умолчанию для значений cookie из сессий для лучшей работы с Google Chrome.
  • Добавлен сигнал message_flashed, который упрощает тестирование flash сообщений.
  • Добавлена поддержка копирования контекстов запросов для лучшей работы с greenlet.
  • Удалены пользовательские подклассы исключений JSON HTTP. Если вы полагались на них, вы можете легко повторно ввести их самостоятельно. Однако их использование настоятельно не рекомендуется, так как интерфейс был неполным.
  • Изменены требования к 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.
  • Blueprints теперь имеют декоратор для добавления пользовательских фильтров шаблонов на уровне приложения, Blueprint.app_template_filter.
  • Классы Flask и Blueprint теперь имеют метод (не декоратор) для добавления пользовательских фильтров шаблонов на уровне приложения, Flask.add_template_filter и Blueprint.add_app_template_filter.
  • Функция get_flashed_messages теперь позволяет отображать категории сообщений flash в отдельных блоках с помощью аргумента 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. Его не следует использовать, но он вызывал некоторые проблемы у менеджеров пакетов.
END_OF_DOCUMENT_MARKER

Версия 0.8

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

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

Версия 0.7.2

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

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

Версия 0.7.1

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

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

Версия 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 для переопределения процесса создания загрузчика.
  • Реализован флаг безмолвия для config.from_pyfile.
  • Добавлен декоратор teardown_request, для функций, которые должны выполняться в конце запроса независимо от того, возникло ли исключение. Также было изменено поведение after_request. Теперь оно не выполняется, когда возникает исключение.
  • Реализован has_request_context.
  • Устарел init_jinja_globals. Чтобы достичь того же функционала, следует переопределить метод Flask.create_jinja_environment.
  • Добавлен safe_join.
  • Автоматическое распаковку данных запроса JSON теперь учитывает параметр MIME-типа charset.
  • Не изменяйте сессию при get_flashed_messages, если в сессии нет сообщений.
  • Обработчики before_request теперь могут прерывать запросы с ошибками.
  • Определение пользовательских обработчиков исключений больше недоступно. Таким образом, вы можете предоставлять настраиваемые сообщения об ошибках из центрального узла для определенных ошибок, которые могут возникнуть во время обработки запроса (например, ошибки подключения к базе данных, таймауты удаленных ресурсов и т.д.).
  • Планы могут предоставлять специфичные для плана обработчики ошибок.
  • Реализованы общие представления на основе класса.

Версия 0.6.1

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

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

Версия 0.6

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

  • Функции обработки запросов теперь вызываются в обратном порядке регистрации.
  • OPTIONS теперь автоматически реализуется Flask, если приложение явно не добавляет «OPTIONS» в качестве метода в правило URL. В этом случае автоматическая обработка OPTIONS не включается.
  • Статические правила теперь присутствуют даже если для модуля нет папки со статическими файлами. Это было реализовано для поддержки GAE, который удалит папку со статическими файлами, если она является частью сопоставления в файле .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. Этот ключ также используется для настройки куки сессии на всех поддоменах.
  • Автоэкранирование больше не включено для всех шаблонов. Теперь оно включено только для .html, .htm, .xml и .xhtml. В шаблонах это поведение можно изменить с помощью тега autoescape.
  • Внутренний рефакторинг Flask. Теперь он состоит из более чем одного файла.
  • send_file теперь генерирует etag и имеет встроенную возможность условных ответов.
  • (временно) прекращена поддержка архивированных приложений. Эта функция редко использовалась и приводила к некоторым неясным проблемам.
  • Добавлена поддержка папок с шаблонами и статическими файлами для каждого пакета.
  • Удалена поддержка create_jinja_loader, которая больше не используется в 0.5 из-за улучшенной поддержки модулей.
  • Добавлена вспомогательная функция для предоставления файлов из любого каталога.

Версия 0.4

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

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

Версия 0.3.1

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

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

Версия 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 App Engine.

Версия 0.1

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

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

© 2007–2022 Pallets
Licensed under the BSD 3-clause License.
https://flask.palletsprojects.com/en/2.3.x/changes/

Spec-Zone.ru

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