Изменения
Версия 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
- CLI не передаёт
Некоторые параметры в
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к команде CLIflask 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
Версия 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-адреса, если аргумент
Flaskstatic_folderзаканчивается слешем.
Версия 1.1.1
Выпущено 2019-07-08
- Флаг
flask.json_availableбыл добавлен обратно для совместимости с некоторыми расширениями. При его использовании будет выведено предупреждение об устаревании, а в версии 2.0.0 он будет удален.
Версия 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 runCLI для указания дополнительных файлов, которые будут инициировать перезагрузчик при изменении. #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
Версия 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 - Атрибут класса
Viewprovide_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
-
Следующий устаревший код был удален. #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, в обработчике запроса.
Версия 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. - Вернута поддержка байтовых строк в систему сессий. Это нарушило совместимость с общим случаем, когда люди помещали бинарные данные для проверки токена в сессию.
- Исправлена проблема, при которой повторная регистрация одного метода для одного конечной точки вызывала исключение некорректно.
Версия 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
- Исправлена проблема с загрузкой шаблонов из каталогов при использовании модулей.
Версия 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/