Spec-Zone.ru › Flask 2.1

Изменения

Версия 2.1.1

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

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

Версия 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 вместо него.
    • Один и тот же бланкет не может быть зарегистрирован с тем же именем. Используйте 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, для ответов перенаправления заголовок URL Location по умолчанию останется относительным и исключит схему и домен. #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
  • Исправлена регистрация бланкета дважды с разными именами. #4124
  • Исправлен тип static_folder для принятия pathlib.Path. #4150
  • jsonify обрабатывает decimal.Decimal, кодируя в str. #4157
  • Правильная обработка повышения отложенных ошибок в леничной загрузке CLI. #4096
  • Загрузчик CLI обрабатывает **kwargs в функции create_app. #4170
  • Исправлен порядок before_request и других обратных вызовов, которые запускаются перед возвратом представления. Они вызываются от приложения вниз к ближайшему вложенному бланкету. #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
  • Отображение ошибки при имени бланкета, содержащем точку. . имеет специальное значение, оно используется для разделения (вложенных) имён бланкета и имени конечной точки. #4041
  • Объединение префиксов URL при вложении бланкетов, созданных со значением url_prefix. #4037
  • Откат изменения порядка выполнения сопоставления URL. URL снова сопоставляется после загрузки сессии, так что сессия доступна в пользовательских преобразователях URL. #4053
  • Возвращение устаревшего Config.from_json, который был случайно удалён ранее. #4078
  • Улучшена типизация некоторых функций, использующих Callable в их сигнатурах типов, с фокусом на фабриках декораторов. #4060
  • Вложенные бланкеты регистрируются со своим имённым значением с точкой. Это позволяет иметь разные бланкеты с одинаковым именем, вложенные в разных местах. #4069
  • register_blueprint принимает параметр name для изменения (до-точечного) имени, с которым регистрируется бланкет. Это позволяет регистрировать один и тот же бланкет несколько раз с уникальными именами для url_for. Регистрация одного и того же бланкета с одинаковым именем несколько раз устарела. #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
  • Командная строка отображает более информативные сообщения об ошибках, когда приложение не удалось загрузить при поиске команд. #2741
  • Добавлен sessions.SessionInterface.get_cookie_name() для динамического задания имени куки сессии. #3369
  • Добавлен Config.from_file() для загрузки конфигурации с помощью произвольных загрузчиков файлов, таких как toml.load или json.load. Config.from_json() устарел в пользу этого. #3398
  • Команда flask run будет откладывать ошибки только при перезагрузке. Ошибки, присутствующие во время первоначального вызова, приведут к немедленному завершению сервера с отслеживанием ошибок.
  • send_file() вызывает ValueError, если передается объект io в текстовом режиме. Ранее он отвечал кодом 200 OK и пустым файлом. #3358
  • При использовании самодельных сертификатов проверяйте библиотеку cryptography вместо PyOpenSSL.
  • При указании функции фабрики с FLASK_APP, можно передать аргумент ключевого слова.
  • При загрузке файла .env или .flaskenv текущая рабочая директория больше не изменяется на местоположение файла.
  • При возвращении кортежа (response, headers) из представления заголовки заменяют, а не расширяют существующие заголовки ответа. Например, это позволяет задать Content-Type для jsonify(). Используйте response.headers.extend(), если требуется расширение.
  • Класс Scaffold предоставляет общий API для классов Flask и Blueprint. Информация Blueprint хранится в атрибутах так же, как и Flask, а не в нечитаемых лямбда-функциях. Это направлено на повышение согласованности и поддерживаемости.
  • Включите опции samesite и secure при удалении куки сессии.
  • Поддержка передачи pathlib.Path в static_folder.
  • send_file и send_from_directory — обертки над реализациями в werkzeug.utils.
  • Некоторые параметры send_file были переименованы, старые имена устарели. attachment_filename переименовано в download_name. cache_timeout переименовано в max_age. add_etags переименовано в etag.
  • send_file передает download_name даже если as_attachment=False с использованием Content-Disposition: inline.
  • send_file устанавливает conditional=True и max_age=None по умолчанию. Cache-Control установлено в no-cache, если max_age не задано, в противном случае public. Это сообщает браузерам проверять условные запросы вместо использования кеша с таймером.
  • helpers.safe_join устарел. Используйте werkzeug.utils.safe_join вместо него.
  • Контекст запроса выполняет сопоставление маршрутов перед открытием сессии. Это может позволить интерфейсу сессии изменять поведение на основе request.endpoint.
  • Используйте реализацию Jinja фильтра |tojson.
  • Добавлены декораторы маршрутов для общих HTTP-методов. Например, @app.post("/login") — это сокращение для @app.route("/login", methods=["POST"]).
  • Поддержка асинхронных представлений, обработчиков ошибок, функций «до» и «после» запроса и функций завершения.
  • Поддержка вложенных blueprints.
  • Установите кодировку по умолчанию на «UTF-8» при загрузке файлов .env и .flaskenv для возможности использования не-ASCII символов.
  • flask shell настраивает автодополнение табов и истории, как в стандартной оболочке python, если readline установлен.
  • helpers.total_seconds() устарел. Используйте timedelta.total_seconds() вместо него.
  • Добавлена типизация.

Версия 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.
  • Добавлена поддержка передачи pathlib.Path для static_folder.

Версия 1.1.2

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

  • Решение проблемы при выполнении команды flask с внешним отладчиком в Windows.
  • Статический маршрут не поймает все URL-адреса, если аргумент Flask static_folder заканчивается слешем.

Версия 1.1.1

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

  • Флаг flask.json_available был добавлен обратно для совместимости с некоторыми расширениями. При его использовании будет выведено предупреждение об устаревании, а в версии 2.0.0 он будет удален.
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
  • flask.RequestContext.copy() включает текущий объект сессии в копию контекста запроса. Это предотвращает session от указания на устаревший объект. #2935
  • Использование встроенного RequestContext, непечатаемые символы Unicode в заголовке Host приведут к HTTP-ответу 400, а не HTTP 500, как раньше. #2994
  • send_file() поддерживает объекты PathLike, как описано в PEP 0519, для поддержки 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() поддерживает объекты dataclasses.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 получить доступ к приложениям и контекстам запросов, например, для запроса id в базе данных. #3088

Версия 1.0.4

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

  • Ключевая информация для BadRequestKeyError больше не очищается вне режима отладки, поэтому обработчики ошибок по-прежнему могут к ней получить доступ. Это требует обновления до Werkzeug 0.15.5. #3249
  • send_file приводит к экранированию символов “:” и “/” для большей совместимости с UTF-8 кодировкой имён файлов в некоторых браузерах. #3074
  • Исправления для загрузчиков импорта PEP451 и 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

Версия 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. jsonify() по умолчанию возвращает компактный формат, а в режиме отладки — отформатированный с отступами. #2193
  • Flask.__init__ принимает аргумент host_matching и устанавливает его для url_map. #1559
  • Flask.__init__ принимает аргумент static_host и передает его как аргумент host при определении статического маршрута. #1559
  • send_file() поддерживает Unicode в attachment_filename. #2223
  • Передача аргумента _scheme из url_for() в handle_url_build_error(). #2017
  • add_url_rule() принимает аргумент provide_automatic_options для отключения добавления метода OPTIONS. #1489
  • MethodView подклассы наследуют обработчики методов от базовых классов. #1936
  • Ошибки, возникшие при открытии сессии в начале запроса, обрабатываются обработчиками ошибок приложения. #2254
  • Планы получили атрибуты json_encoder и json_decoder для переопределения кодировщика и декодировщика приложения. #1898
  • Flask.make_response() вызывает исключение TypeError вместо ValueError для типов ответов с ошибками. Сообщения об ошибках были улучшены, чтобы описать, почему тип недействителен. #2256
  • Добавлен CLI-команда routes для вывода зарегистрированных маршрутов приложения. #2259
  • Выводится предупреждение, если домен cookie сессии — это просто имя хоста или IP-адрес, так как в некоторых браузерах (например, Chrome) это может работать некорректно. #2282
  • Разрешено использовать IP-адрес в качестве точного домена cookie сессии. #2282
  • SESSION_COOKIE_DOMAIN устанавливается, если он обнаружен с помощью SERVER_NAME. #2282
  • Автоматическое обнаружение фабрики приложений без аргументов, называемой create_app или make_app из FLASK_APP. #2297
  • Функции-фабрики не обязаны принимать параметр script_info для работы с командой flask. Если они принимают один параметр или параметр с именем script_info, объект ScriptInfo будет передан. #2319
  • FLASK_APP может указывать на фабрику приложений с аргументами, если это необходимо, например, FLASK_APP=myproject.app:create_app('dev'). #2326
  • FLASK_APP может указывать на локальные пакеты, которые не установлены в режиме редактирования, хотя pip install -e всё ещё предпочтительнее. #2414
  • Атрибут класса View provide_automatic_options устанавливается в as_view(), чтобы быть обнаруженным add_url_rule(). #2316
  • Обработка ошибок будет искать обработчики, зарегистрированные для blueprint, code, app, code, blueprint, exception, app, exception. #2314
  • Cookie добавляется в заголовок ответа Vary , если к сессии обращаются в запросе (и не удаляются). #2288
  • test_request_context() принимает аргументы subdomain и url_scheme для использования при построении базового URL. #1621
  • Установлено значение APPLICATION_ROOT по умолчанию на '/'. Это уже было неявным значением по умолчанию, когда оно было установлено на None.
  • TRAP_BAD_REQUEST_ERRORS включено по умолчанию в режиме отладки. BadRequestKeyError имеет сообщение с плохим ключом в режиме отладки вместо общего сообщения об ошибке плохого запроса. #2348
  • Разрешено регистрировать новые теги с помощью TaggedJSONSerializer для поддержки хранения других типов в cookie сессии. #2352
  • Открыть сессию только если запрос ещё не добавлен в стек контекста. Это позволяет генераторам stream_with_context() получать доступ к той же сессии, что и содержащий виджет. #2354
  • Добавлен ключевой аргумент json для методов запроса тестового клиента. Он преобразует переданный объект в JSON и задаёт соответствующий тип содержимого. #2358
  • Обработка JSON вынесена в миксин, который применяется к классам Request и Response. Это добавляет методы is_json() и get_json() к ответу для упрощения тестирования ответов в формате JSON. #2358
  • Удален кэширование обработчиков ошибок, так как это приводило к неожиданным результатам для некоторых иерархий наследования исключений. Зарегистрируйте обработчики явно для каждого исключения, если вы хотите избежать обхода MRO. #2362
  • Исправлена некорректная кодировка JSON для часовых, не UTC-даты и времени. #2374
  • Автоперезагрузка шаблонов будет учитывать режим отладки, даже если jinja_env уже был обращён к нему. #2373
END_OF_DOCUMENT_MARKER
  • Следующий устаревший код был удален. #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
  • Исправлена ошибка, вызванная некорректными запросами Range в некоторых случаях. #2526
  • Сервер разработки по умолчанию использует потоки. #2529
  • Загрузка файлов конфигурации с silent=True игнорирует ошибки ENOTDIR. #2581
  • Передайте параметры --cert и --key в flask run для запуска сервера разработки через HTTPS. #2606
  • Добавлен SESSION_COOKIE_SAMESITE для управления атрибутом SameSite в cookie сессии. #2607
  • Добавлен test_cli_runner() для создания Click-раннера, который может вызывать команды Flask CLI для тестирования. #2636
  • Сопоставление по поддоменам по умолчанию отключено, и установка SERVER_NAME не подразумевает его включения. Его можно включить, передав subdomain_matching=True в конструктор Flask. #2635
  • Одиночный конечный слэш удаляется из 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 о больших 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, в обработчике запроса.
END_OF_DOCUMENT_MARKER

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

  • Добавлена поддержка сериализации массивов верхнего уровня в flask.jsonify(). Это вводит риск безопасности в старых браузерах.
  • Добавлен сигнал before_render_template.
  • Добавлен **kwargs к flask.Test.test_client() для поддержки передачи дополнительных ключевых аргументов в конструктор flask.Flask.test_client_class.
  • Добавлен параметр конфигурации SESSION_REFRESH_EACH_REQUEST, который контролирует поведение set-cookie. Если он установлен в True, постоянная сессия будет обновляться при каждом запросе и срок её действия будет продлён, если установлен в False, то она будет модифицирована только если сессия была фактически изменена. На временные сессии это не влияет, и они всегда истекают при закрытии окна браузера.
  • Фреймворк Flask теперь поддерживает настраиваемые MIME-типы JSON для входящих данных.
  • Добавлена поддержка возвращения кортежей в форме (response, headers) из функции представления.
  • Добавлен flask.Config.from_json().
  • Добавлен flask.Flask.config_class.
  • Добавлен flask.Config.get_namespace().
  • Шаблоны больше не перезагружаются автоматически вне режима отладки. Это можно настроить с помощью нового параметра конфигурации TEMPLATES_AUTO_RELOAD.
  • Добавлен обходной путь для ограничения в загрузчике пространства имён Python 3.3.
  • Добавлена поддержка явных корневых путей при использовании пакетов пространства имён Python 3.3.
  • Добавлены flask и модуль flask.cli для запуска локального сервера отладки через систему командной строки click. Это рекомендуется вместо старого метода flask.run(), так как он работает быстрее и надёжнее благодаря разному дизайну, а также заменяет Flask-Script.
  • Обработчики ошибок, соответствующие определённым классам, теперь проверяются в первую очередь, что позволяет перехватывать исключения, являющиеся подклассами исключений HTTP (в werkzeug.exceptions). Это позволяет автору расширения создавать исключения, которые по умолчанию приводят к ошибке HTTP по своему выбору, но могут быть перехвачены пользовательским обработчиком ошибок при необходимости.
  • Добавлен flask.Config.from_mapping().
  • Flask теперь будет вести логирование по умолчанию, даже если отладка отключена. Формат лога сейчас жёстко задан, но обработка логов по умолчанию может быть отключена с помощью параметра конфигурации LOGGER_HANDLER_POLICY.
  • Удалена устаревшая функциональность модуля.
  • Добавлен параметр конфигурации EXPLAIN_TEMPLATE_LOADING, который, если включен, укажет Flask объяснить, как он находит шаблоны. Это должно помочь пользователям отладить, когда загружаются неправильные шаблоны.
  • Обработка шаблонов через blue-prints происходит в порядке их регистрации.
  • Тестовый набор переведён на py.test.
  • Устаревший request.json заменён на request.get_json().
  • Добавлены определения разделителей «pretty» и «compressed» в методе jsonify(). Уменьшает размер JSON-ответа при JSONIFY_PRETTYPRINT_REGULAR=False путём удаления ненужных пробелов, включённых по умолчанию после разделителей.
  • JSON-ответы теперь завершаются символом новой строки, так как это соглашение, что текстовые файлы UNIX заканчиваются новой строкой, и некоторые клиенты плохо реагируют, когда этой новой строки нет. Это возникло изначально как часть https://github.com/postmanlabs/httpbin/issues/168. #1262
  • Автоматически предоставляемый метод OPTIONS теперь правильно отключён, если пользователь зарегистрировал переопределяющее правило с версией в нижнем регистре options. #1288
  • flask.json.jsonify теперь поддерживает тип datetime.date. #1326
  • Не раскрывать информацию об исключении уже перехваченных исключений обработчикам завершения контекста. #1393
  • Разрешение настраивать подклассы среды Jinja. #1422
  • Обновлены руководящие принципы разработки расширений.
  • flask.g теперь имеет методы pop() и setdefault.
  • Автоматически включить autoescape для flask.templating.render_template_string по умолчанию. #1515
  • flask.ext теперь устарел. #1484
  • send_from_directory теперь поднимает BadRequest, если имя файла недействительно в операционной системе сервера. #1763
  • Добавлен параметр конфигурации JSONIFY_MIMETYPE. #1728
  • Исключения во время обработки завершения больше не оставляют плохие контексты приложения.
  • Исправлен сломанный тестовый случай test_appcontext_signals().
  • Вызвать AttributeError в flask.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.
  • Вернута поддержка байтовых строк в систему сессий. Это нарушило совместимость с общим случаем, когда люди помещали бинарные данные для проверки токена в сессию.
  • Исправлена проблема, при которой повторная регистрация одного метода для одного конечной точки вызывала исключение некорректно.
END_OF_DOCUMENT_MARKER

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

Версия 0.9

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

  • Теперь flask.Request.on_json_loading_failed() по умолчанию возвращает JSON-форматированный ответ.
  • Функция flask.url_for() теперь может генерировать якоря для сгенерированных ссылок.
  • Функция flask.url_for() теперь также может явно генерировать правила URL, специфичные для данного HTTP-метода.
  • Журналирование теперь возвращает только значение настроек отладки, если оно не было установлено явно.
  • При завершении запроса отключается циклическая зависимость между средой WSGI и объектом запроса. Это означает, что environ werkzeug.request будет None после возвращения ответа WSGI-серверу, но имеет преимущество, что сборщик мусора не нужен в CPython для разрушения запроса, если пользователь не создал циклические зависимости самостоятельно.
  • Сессия теперь сохраняется после обратных вызовов, так что если данные сессии хранятся в сессии, вы всё ещё можете изменить их в обратном вызове после запроса.
  • Класс flask.Flask будет избегать импорта предоставленного имени импорта, если это возможно (требуемый первый параметр), чтобы помочь инструментам, которые программно создают экземпляры Flask. Класс Flask вернётся к использованию импорта на системах с пользовательскими хуками модулей, например, Google App Engine, или когда имя импорта находится в архиве zip (обычно .egg) до Python 2.7.
  • Blueprints теперь имеют декоратор для добавления пользовательских фильтров шаблонов для всего приложения, flask.Blueprint.app_template_filter().
  • Классы Flask и Blueprint теперь имеют метод, не являющийся декоратором, для добавления пользовательских фильтров шаблонов для всего приложения, flask.Flask.add_template_filter() и flask.Blueprint.add_app_template_filter().
  • Функция flask.get_flashed_messages() теперь позволяет рендерить категории сообщений всплывающих уведомлений в отдельных блоках через аргумент category_filter.
  • Метод flask.Flask.run() теперь принимает None для host и port аргументов, используя значения по умолчанию, когда None. Это позволяет вызывать run с использованием значений конфигурации, например, app.run(app.config.get('MYHOST'), app.config.get('MYPORT')), с правильным поведением, независимо от того, предоставлен ли файл конфигурации.
  • Метод flask.render_template() теперь принимает либо итерируемый список имён шаблонов, либо одно имя шаблона. Ранее он принимал только одно имя шаблона. В случае итерируемого списка, рендерится первый найденный шаблон.
  • Добавлен flask.Flask.app_context(), который работает очень похоже на контекст запроса, но предоставляет доступ только к текущему приложению. Это также добавляет поддержку генерации URL без активного контекста запроса.
  • Функции представления теперь могут возвращать кортеж, первым элементом которого является экземпляр flask.Response. Это позволяет возвращать jsonify(error="error msg"), 400 из функции представления.
  • Flask и Blueprint теперь предоставляют get_send_file_max_age() хук для подклассов, чтобы переопределить поведение обслуживания статических файлов из Flask при использовании flask.Flask.send_static_file() (используется для обработчика статических файлов по умолчанию) и send_file(). Этот хук получает имя файла, что, например, позволяет изменять заголовки кэширования по расширению файла. Максимальное значение max-age для send_file и статических файлов можно настроить с помощью новой переменной конфигурации SEND_FILE_MAX_AGE_DEFAULT, которая используется в реализации get_send_file_max_age по умолчанию.
  • Исправлена предпосылка в реализации сессий, которая могла нарушить всплывающие сообщения в реализациях сессий, использующих внешнее хранилище.
  • Изменено поведение кортежей, возвращаемых из функций. Они больше не являются аргументами объекта ответа, а имеют определённый смысл.
  • Добавлен flask.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.
  • Теперь пустые файлы cookie сессий автоматически удаляются должным образом.
  • Функции представления теперь могут отказаться от автоматической реализации OPTIONS.
  • Теперь можно перехватывать исключения HTTP и ошибки Bad Request, чтобы они нормально отображались в трассировке.
  • Flask в режиме отладки теперь обнаруживает некоторые распространённые проблемы и пытается предупредить вас об них.
  • Flask в режиме отладки теперь будет жаловаться с помощью ошибки утверждения, если представление было подключено после обработки первого запроса. Это даёт более раннюю обратную связь, когда пользователи забывают импортировать код представления заранее.
  • Добавлена возможность регистрации обратных вызовов, которые срабатывают только один раз в начале первого запроса. (Flask.before_first_request())
  • Неправильные данные JSON теперь вызывают исключение HTTP bad request вместо ошибки значения, которая обычно приводила к ошибке 500 Internal Server Error, если не обрабатывалась. Это изменение несовместимо с предыдущими версиями.
  • Теперь приложения имеют не только корневой путь, где расположены ресурсы и модули, но и путь экземпляра, который является назначенным местом для сохранения файлов, которые изменяются во время выполнения (загрузки и т. д.). Кроме того, это зависит только от экземпляра и находится вне системы контроля версий, поэтому это идеальное место для размещения файлов конфигурации и т. д.
  • Добавлена переменная конфигурации APPLICATION_ROOT.
  • Реализована session_transaction() для лёгкого изменения сессий из тестовой среды.
  • Внутренне переработан тестовый клиент. Переменная конфигурации APPLICATION_ROOT и SERVER_NAME теперь должным образом используются тестовым клиентом в качестве значений по умолчанию.
  • Добавлен flask.views.View.decorators для поддержки более простого декорирования подключаемых представлений (на основе класса).
  • Исправлена проблема, когда тестовый клиент, если использовался с оператором «with», не вызывал обработчики завершения.
  • Добавлен более точный контроль параметров файлов cookie сессии.
  • Запросы HEAD к представлению метода теперь автоматически перенаправляют вызов к методу get , если обработчик не был реализован.
  • Реализован виртуальный пакет flask.ext для импорта расширений.
  • Сохранение контекста при возникновении исключений теперь является неотъемлемой частью Flask и больше не зависит от тестового клиента. Это позволило упорядочить внутреннюю логику и снизить вероятность появления неконтролируемых контекстов запроса в модульных тестах.
  • Исправлен метод list_templates среды Jinja2, который не возвращал правильные имена, когда были вовлечены подключаемые модули или модули.

Версия 0.7.2

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

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

Версия 0.7.1

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

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

Версия 0.7

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

  • Добавлен make_default_options_response(), который может использоваться подклассами для изменения стандартного поведения для ответов OPTIONS.
  • Несвязанные локальные переменные теперь генерируют правильное исключение RuntimeError вместо AttributeError.
  • Угадывание MIME-типа и поддержка ETag на основе объектов файлов теперь устарела для flask.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 . Теперь оно не выполняется при возникновении исключения.
  • Реализован flask.has_request_context()
  • Устарела функция init_jinja_globals. Вместо этого переопределите метод create_jinja_environment() для достижения аналогичного функционала.
  • Добавлен flask.safe_join()
  • Автоматическое распаковывание данных запроса JSON теперь учитывает параметр charset MIME-типа.
  • Не изменяйте сессию в flask.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.
  • Переменная config теперь доступна в шаблонах как config.
  • Обработчики контекста больше не будут переопределять значения, непосредственно переданные в функцию render.
  • Добавлена возможность ограничить данные входящего запроса с помощью новой переменной конфигурации MAX_CONTENT_LENGTH.
  • Конечная точка для метода flask.Module.add_url_rule() теперь является необязательной, чтобы обеспечить соответствие с функцией с тем же именем в объекте приложения.
  • Добавлена функция flask.make_response(), упрощающая создание экземпляров объектов ответа в представлениях.
  • Добавлена поддержка сигналов на основе blinker. Эта функция сейчас необязательна и предназначена для использования расширениями и приложениями. Если вы хотите её использовать, убедитесь, что у вас установлен пакет blinker.
  • Переработан способ создания адаптеров URL. Этот процесс теперь полностью настраивается с помощью метода create_url_adapter().
  • Модули теперь могут регистрировать поддомены вместо просто префикса URL. Это позволяет связать весь модуль с настраиваемым поддоменом.

Версия 0.5.2

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

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

Версия 0.5.1

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

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

Версия 0.5

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

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

Версия 0.4

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

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

Версия 0.3.1

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

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

Версия 0.3

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

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

Версия 0.2

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

  • Различные исправления ошибок
  • Встроенная поддержка JSON
  • Добавлена вспомогательная функция get_template_attribute().
  • 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.1.x/changes/

Spec-Zone.ru

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