Spec-Zone.ru › Flask 2.2

Изменения

Версия 2.2.3

Не выпущена

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

Версия 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. Приложение всегда загружается в первый раз, а затем загружается лениво в перезагрузчике. Перезагрузчик всегда отображает ошибки немедленно, но продолжает обслуживание. Удалить внутренний DispatchingApp middleware, используемый предыдущей реализацией. #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

    • Командная строка не передает 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
  • Командная строка использует importlib.metadata вместо setuptools для загрузки точек входа команд. #4419
  • Переопределение FlaskClient.open не вызовет ошибку при перенаправлении. #3396
  • Добавлен параметр --exclude-patterns к команде 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
  • Откат изменения в командной строке, которое приводило к скрытию 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
  • Правильная обработка отложенных ошибок в леничной загрузке командной строки. #4096
  • Загрузчик командной строки обрабатывает **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) содержит точку. . имеет специальное значение, оно используется для разделения (вложенных) имён модулей маршрутов и имени конечной точки. #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
  • JSONMixin Flask для оберток запроса и ответа был перемещен в 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 к команде CLI flask run для указания дополнительных файлов, которые будут запускать перезагрузчик при изменении. #2897
  • Возвращаемое значение функции представления может быть словарем. Подобно тому, как возврат строки создаёт ответ text/html, возврат словаря вызовет jsonify для создания ответа application/json. #3111
  • У модулей Blueprint есть группа Click cli, как у app.cli. Команды CLI, зарегистрированные с Blueprint, будут доступны как группа под командой 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
  • Разрешение пользовательских CLI с помощью 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

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

Версия 1.0.1

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

  • Исправлена регистрация частичных представлений (без __name__) как функций представления. #2730
  • Списки, возвращаемые функциями представлений, не обрабатываются как кортежи. Только кортежи интерпретируются как данные ответа. #2736
  • Дополнительные слеши между префиксом url_prefix Blueprint и 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
  • Модули Blueprint получили атрибуты Blueprint.json_encoder и TypeError для переопределения кодировщика и декодировщика приложения. #1898
  • Flask.make_response вызывает TypeError вместо ValueError для типов ответов с ошибкой. Сообщения об ошибках были улучшены для описания причины некорректности типа. #2256
  • Добавление команды routes CLI для вывода зарегистрированных в приложении маршрутов. #2259
  • Вывод предупреждения, когда домен куки сессии представляет собой только имя хоста или IP-адрес, так как они могут работать некорректно в некоторых браузерах, таких как Chrome. #2282
  • Разрешение IP-адреса как точного домена куки сессии. #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 для поддержки хранения других типов в куке сессии. #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 куки сессии. #2607
  • Добавление Flask.test_cli_runner для создания Click-раннера, который может вызывать команды Flask CLI для тестирования. #2636
  • Сопоставление по поддоменам отключено по умолчанию, и установка SERVER_NAME не подразумевает его включение. Его можно включить, передав subdomain_matching=True конструктору Flask. #2635
END_OF_DOCUMENT_MARKER
  • Из шаблона blueprint 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
  • Откатить изменение поведения, которое приводило к сбою сервера разработки вместо возвращения ошибки 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. Если задано False, постоянная сессия будет обновляться при каждом запросе и ее срок действия будет продлеваться, если задано True, она будет изменяться только в случае фактического изменения сессии. На непостоянные сессии это не влияет, и они всегда будут истекать при закрытии окна браузера.
  • Добавлена поддержка пользовательских MIME-типов JSON для входных данных в Flask.
  • Добавлена поддержка возвращения кортежей в формате (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 на то, как он находит шаблоны. Это должно помочь пользователям отладить проблему, когда загружаются не те шаблоны.
  • Обработка модулей-планов теперь выполняется в порядке их регистрации для загрузки шаблонов.
  • Тестовый набор перенесён на py.test.
  • Устарел request.json в пользу request.get_json().
  • Добавлены определения разделителей «красивый» и «сжатый» в метод 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

  • Изменён формат сериализации куки по умолчанию с 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 не будут доступны и обработчики контекста планов не вызываются.
  • Объект конфигурации теперь доступен в шаблоне в качестве реального глобального, а не через обработчик контекста, что делает его доступным даже в импортированных шаблонах по умолчанию.
  • Добавлена возможность генерации 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 не работали как задумано с именами доменов.
  • Изменена логика выбора значений по умолчанию для значений куки из сессий для лучшей работы с Google Chrome.
  • Добавлен сигнал message_flashed для упрощения тестирования флэша.
  • Добавлена поддержка копирования контекстов запроса для лучшей работы с greenlets.
  • Удалены пользовательские подклассы исключений HTTP JSON. Если вы полагались на них, вы можете легко их снова добавить. Однако использование их настоятельно не рекомендуется, так как интерфейс был ненадлежащим.
  • Изменены требования к Python: теперь требуется Python 2.6 или 2.7 для подготовки к портированию в Python 3.3.
  • Изменено поведение системы завершения для оповещения об исключениях. Это теперь более надёжно, если что-то обрабатывает исключение на полпути процесса обработки ошибок.
  • Сохранение контекста запроса в режиме отладки теперь сохраняет информацию об исключении, что позволяет обработчикам завершения различать успешные и неуспешные ситуации.
  • Добавлена переменная конфигурации JSONIFY_PRETTYPRINT_REGULAR.
  • Flask теперь упорядочивает ключи JSON по умолчанию, чтобы не ломать кэши HTTP из-за разных seed хешей между разными рабочими процессами.
  • Добавлены сигналы appcontext_pushed и appcontext_popped.
  • Встроенный метод run теперь учитывает SERVER_NAME при выборе порта по умолчанию для запуска.
  • Добавлен flask.request.get_json() в качестве замены старого свойства flask.request.json.
END_OF_DOCUMENT_MARKER

Версия 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 теперь позволяет рендерить категории сообщений, которые были отображены, в отдельных блоках с помощью аргумента 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. Этот хук получает имя файла, что, например, позволяет изменять параметры кэширования по расширению файла. Максимальное время кэширования (max-age) для 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 теперь вызывают исключение HTTP Bad Request, а не ошибку значения, которая обычно приводила к ошибке 500 внутреннего сервера, если не обрабатывалась. Это изменение несовместимо со старыми версиями.
  • Приложения теперь имеют не только корневой путь, где находятся ресурсы и модули, но также путь экземпляра, который является назначенным местом для добавления файлов, которые изменяются во время выполнения (загрузки и т. д.). Кроме того, это концептуально зависит только от экземпляра и находится вне системы контроля версий, поэтому это идеальное место для размещения файлов конфигурации и т. д.
  • Добавлена переменная конфигурации APPLICATION_ROOT.
  • Реализована функция TestClient.session_transaction для лёгкого изменения сессий из тестовой среды.
  • Внутренний рефакторинг тестового клиента. Переменные конфигурации APPLICATION_ROOT и SERVER_NAME теперь должным образом используются тестовым клиентом в качестве значений по умолчанию.
  • Добавлен View.decorators для поддержки более простого декорирования подключаемых представлений (на основе класса).
  • Исправлена проблема, когда тестовый клиент при использовании с оператором «with» не вызывал обработчики завершения.
  • Добавлен более тонкий контроль над параметрами куки сессии.
  • Запросы HEAD к представлению метода теперь автоматически перенаправляются на метод get , если обработчик не был реализован.
  • Реализован виртуальный пакет flask.ext для импорта расширений.
  • Сохранение контекста при исключениях теперь является неотъемлемой частью самого Flask, а не только тестового клиента. Это упростило внутреннюю логику и снизило вероятность возникновения необработанных контекстов запросов в модульных тестах.
  • Исправлена ошибка метода list_templates среды Jinja2, который не возвращал правильные имена, когда участвовали blueprints или модули.

Версия 0.7.2

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

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

Версия 0.7.1

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

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

Версия 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 обработчики теперь могут прерывать запросы с ошибками.
  • Определять пользовательские обработчики исключений теперь невозможно. Таким образом, вы можете предоставлять пользовательские сообщения об ошибках из централизованного узла для определённых ошибок, которые могут произойти во время обработки запроса (например, ошибки соединения с базой данных, таймауты от удалённых ресурсов и т. д.).
  • Blueprints могут предоставлять обработчики ошибок, специфичные для blueprints.
  • Реализованы общие представления на основе класса.

Версия 0.6.1

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

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

Версия 0.6

Выпущено 2010-07-27, кодовое название Виски

  • Функции по запросу теперь вызываются в обратном порядке регистрации.
  • OPTIONS теперь автоматически реализуется Flask, если приложение явно не добавляет «OPTIONS» в качестве метода к правилу URL. В этом случае автоматическая обработка OPTIONS не включается.
  • Статические правила теперь действуют даже при отсутствии статической папки для модуля. Это было реализовано для поддержки GAE, которая удалит статическую папку, если она является частью отображения в файле .yml.
  • Flask.config теперь доступен в шаблонах как config.
  • Обработчики контекста больше не будут перезаписывать значения, переданные непосредственно в функцию рендеринга.
  • Добавлена возможность ограничения данных входящего запроса с новым значением конфигурации 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, кодовое название Кальвадос

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

Версия 0.4

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

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

Версия 0.3.1

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

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

Версия 0.3

Выпущено 2010-05-28, кодовое название Шнапс

  • Добавлена поддержка категорий для сообщений, отображаемых в виде всплывающих окон.
  • Приложение теперь настраивает 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.2.x/changes/

Spec-Zone.ru

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