Изменения
Версия 2.2.3
Не выпущена
Версия 2.2.2
Выпущена 2022-08-08
Версия 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, а не с помощью
LocalStackWerkzeug. Это должно привести к лучшей производительности и использованию памяти. #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к CLIflask, вместо того, чтобы требовать их установки через переменные среды. #2836 - Добавление параметра
--env-fileк CLIflask. Это позволяет указать файл 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. Приложение всегда загружается в первый раз, а затем загружается лениво в перезагрузчике. Перезагрузчик всегда отображает ошибки немедленно, но продолжает обслуживание. Удалить внутреннийDispatchingAppmiddleware, используемый предыдущей реализацией. #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
Версия 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
- Командная строка не передает
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, для ответов с перенаправлением заголовок
LocationURL останется относительным и будет исключать схему и домен по умолчанию. #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
Версия 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
Версия 1.1.2
Выпущена 2020-04-03
Версия 1.1.1
Выпущена 2019-07-08
- Флаг
flask.json_availableбыл добавлен обратно для совместимости с некоторыми расширениями. При использовании будет выведено предупреждение об устаревании, и он будет удален в версии 2.0.0. #3288
Версия 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 JSONMixinFlask для оберток запроса и ответа был перемещен в 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к команде CLIflask 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
Версия 1.0.1
Выпущено 2018-04-29
- Исправлена регистрация частичных представлений (без
__name__) как функций представления. #2730 - Списки, возвращаемые функциями представлений, не обрабатываются как кортежи. Только кортежи интерпретируются как данные ответа. #2736
- Дополнительные слеши между префиксом
url_prefixBlueprint и 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.~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 - Добавление команды
routesCLI для вывода зарегистрированных в приложении маршрутов. #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 - Атрибут класса
ViewView.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
- Из шаблона 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.
Версия 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, а клиент использовал обратные слэши для экранирования каталога, из которого отображались файлы.
Версия 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/