Предисловие для опытных программистов

Внутрипоточные объекты (Thread-Locals) во Flask

Одним из проектных решений для Flask было то, что простые задачи должны быть простыми; они не должны требовать большого объёма кода, а ещё они не должны ограничивать вас. Поэтому, при созданиее Flask были выбраны несколько решений, которые для некоторых людей могут показаться неожиданными или оргигинальными. Например, внутри себя Flask использует внутрипоточные объекты, поэтому вам в запросе, чтобы сохранять потокобезопасность (thread-safe), необязательно передавать объекты от функции к функции. Такой подход удобен, но требует дейстивительныйо контекст запроса для внедрения зависимостей или при попытке повторного использования кода, который использует занчение, привязанное к запросу. Flask относится честно к внутрипоточным переменным, не скрывает их и всегда явно указывает в коде и в документации, где бы они не использовались.

Разработка для Веб с осторожностью

При создании веб-приложений всегда думайте о безопасности.

Если вы пишете веб-приложение, вы, вероятно, позволяете пользователям регистрироваться и оставлять их данные на сервере. Пользователи доверяют вам свои данные. И даже если вы являетесь единственным пользоваетелем, который может внести данные в приложение, всё равно вы хотите надёжно их сохранить.

К сожалению, существует множество способов, чтобы скомпрометировть защиту с точки зрения безопасности веб-приложения. Flask защищает вас от одной и наиболее распространённых проблем безопасности современных веб-приложений: от межсайтового скриптинга (cross-site scripting - XSS). Если только вы не пометите небезопасный HTML-код как безопасный, вас прикроет Flask и нижележащий шаблонизатор Jinja2. Но существует и множество других способов вызвать проблемы с безопасностью.

Документация предупердит вас о тех аспектах веб-разработки, которые требуют внимания к безопасности. Некоторые из этих соображений являются гораздо более сложными, чем можно было бы подумать, и иногда все мы недооцениваем вероятность того, что уязвимость будет использована - а в это время толковый злоумышленник вычисляет способы для взлома наших приложений. Н надейтесь, что ваше приложение не настолько важно, чтобы привлечь злоумышленника. При некоторых видах атаки есть вероятность, что автоматизированные боты зондируют различные способы заполнения вашей базы данных спамом, ссылками на вредоносные программы и т. п.

Flask ничем не отличается от других фреймворков в плане того, что вы, как разработчик, при разработке в соответствии с вашей постановкой задачи, должны действовать с осторожностью, при этом следя за попытками взлома.

Статус Python 3

В настоящее время сообщество Python находится в процессе совершенствования библиотек для поддержки новой итерации языка программирования Python. Хотя ситуация и резко улучшается, есть ещё некоторые вопросы, из-за которых нам трудно переключиться на Python 3 прямо сейчас. Эти проблемы частично вызваны изменениями в языке, которые не были опробованы в течение достаточно продолжительно времени, частично те, что мы ещё не работали на нижем уровне с теми изменениями уровня API, которые внёс Python 3 в работу с Unicode.

Werkzeug и Flask будут портированы на Python 3, как только решение для подобных изменений будет найдено, и мы обеспечим полезными советами, как обновить существующие приложения для работы с Python 3. Пока этого не произошло, мы настоятельно рекомендуем использовать Python 2.6 и 2.7 с активированными на время разработки предупреждениями о несовместимости с Python 3. Если вы планируете в ближайшем будущем переход на Python 3, мы настоятельно рекомендуем прочитать вам статью Как писать на Python совместимый снизу вверх код.

Продолжение: Инсталяция или the Быстрый старт.