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

Внутрипоточные объекты (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.

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

Если вы уже созрели до работы с Python 3, посмотрите страницу python3-support.

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

Оригинал этой страницы