Для чего нужен фреймворк bottle

Обновлено: 06.07.2024

Bottle - это веб-микрофреймворк, совместимый с WSGI, который зависит только от стандартной библиотеки Python и совместим с Python версий 2.6, 2.7, 3.2, 3.3 и 3.4. Весь исходный текст фреймворка умещается в одном файле. Он был создан Марселем Хеллкэмпом (Marcel Hellkamp - @defnull) и поддерживается сообществом, образовавшимся вокруг этого фреймворка.

Django - это прагматичный фреймворк для быстрой веб-разработки, который написан на Python, использует стандарт MTV (model-template-view - модель-шаблон-представление). Изначально он был создан как система для управления сайтом журнала в городе Лоуренс, в Канзасе. Стал проектом с открытым исходным кодом, был опубликован под лицензией BSD в 2005 году. Название Django фреймворк получил в честь джазового музыканта Джанго Рейнхардта. Django стал очень известен благодаря поставке с "батарейкам", то есть благодаря нескольким библиотекам, добавленным к основному коду фреймворка для упрощения разработки. Вместе с фреймворком эти библиотеки сформировали так называемый "полный стек".

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

Хорошо ли, если вместе с веб-фреймворком поставляются "батарейки"? Если вы согласны использовать всё, что даёт вам фреймворк, то ответ - да. Однако, не все веб-проекты одинаковы.

В большинстве проектов используется не более 80% возможностей Django. В тех случаях, когда используется не более 50% возможностей, мы вынуждены платить за все, что было предусмотрено архитектурой Django. То есть теряем в производительности, потому что в Django имеется множество модулей, которые не используются, но по-прежнему продолжают работать. Когда же мы используем микрофреймворк, мы берём на себя роль архитектора приложения. Поскольку у нас нет предопределённой архитектуры, нам нужно время, чтобы определить архитектуру приложения.

  • ORM - SQLAlchemy в bottle-sqlalchemy
  • Формы - WTForms
  • Шаблонизатор - Jinja2, mako и т.п.
  • Миграции - Alembic

SQLAlchemy

SQLAlchemy существовал до Django (да, до Django) и начиная с 2005 года появилась команда, которая стала заниматься разработкой ORM. Команда же разработчиков Django занимается одновременно и разработкой фреймворка и разработкой ORM. Я думаю, что не стоит говорить о том, что результат работы специалистов обычно бывает лучше, чем результат работы универсалов.

WTForms

Обходное решение для тех, кто не использует Django и кому нужно работать с формами - это WTForms, которые были созданы в 2008 году и поддержка которых продолжается до сих пор!

Шаблонизатор

Jinja2 - это современный удобный для дизайнеров язык шаблонизации для Python, который был создан по образцу шаблонов Django. Он быстрый, широко используется и может быть дополнительно защищён изоляцией рабочего окружения.

Миграция

Использование Alembic начинается с создания среды миграции. Это каталог сценариев, которые относятся к отдельному приложению. Среда миграции создаётся единожды, а затем поддерживается совместно с исходным кодом самого приложения.

Структура миграции:
Как создать обновление и откат:
Структура модификации таблицы:

Заключение

Здесь было продемонстрировано всё, что можно найти в стеке Django. Я писал эту заметку для не для того, чтобы принизить Django. Я лишь показал, что существуют другие полностековые решения для разработки приложений. Многие люди используют Django, не понимая экосистемы Python. В наше время Django предоставляет множество готовых решений, что заставляет некоторых разработчиков лениться и не наращивать мастерство в проектировании архитектуры приложения.

Помогайте Bottle. Мы - растущее сообщество. Чтобы внести свой вклад в код Bottle, обратитесь к списку открытых задач. В случае сомнений можно обратиться в список рассылки или в IRC-канал.

Считаю, что в статье тема не раскрыта. Не понятно, какая такая особенная архитектура приложения имелась в виду,
которая никак не сочетается с Django. Перечислено несколько средств, которые в чём-то заменяют средства, имеющиеся в Django. Без сомнений, SQLAlchemy заткнёт за пояс джанговский ORM. Безусловно, Jinja2 - очень быстрый шаблонизатор, быстрее джанговского. Но стоит иметь в виду, что в Django все эти средства глубоко интегрированы друг с другом.

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

Я сам в своих проектах использую Django, но для некоторых задач он действительно избыточен. Например, в одной из прошлых своих заметок я писал Тайловый сервер на основе Python, Mapnik и Bottle. Денис Рыков, материалами которого я воспользовался, тоже писал тайловый сервер, воспользовавшись фреймворком Bottle. Для себя я решил, что если приложение не работает с собственной базой данных, а берёт информацию из сторонних источников и занимается лишь её преобразованием, или выполняет какие-то действия по требованию, то лучше использовать Bottle, т.к. в нём нет избыточных возможностей, а сам он обладает минимумом зависимостей и работает с любой версией Python.

Bottle — очень легкий фреймворк и помещается всего в один файл — bottle.py. Установить его можно отсюда, либо сделать pip install bottle.

Возможности

Несмотря на свою минималистичность, Bottle предоставляет довольно широкие возможности, которых на 100% хватает для мелких и средних проектов. Вот список основных возможностей:

Routing

Роутинг в bottle, как и в большинстве фреймворков на питоне, осуществляется с помощью декораторов. Например:

Также динамические url можно составлять на основе регулярных выражений:

Templates

Одна из сильнейших сторон фреймворка — механизм шаблонов. Чтобы воспользоваться шаблонизатором, достаточно написать такую легкую конструкцию:

Первый аргумент функции — название файла, в котором содержится текст шаблона (в нашем случае шаблон будет называться template_name.tpl).
В самом же файле нам нужно написать название переменной в двух фигурных скобках:

По-умолчанию сделано так, что если в скобках указан html код, то он не выполнится, во избежание XSS атак. Если же нам это очень надо, можно написать >. Также Bottle предоставляет нам очень очень крутую возможность: писать любой python код внутри шаблона. Чтобы вызвать питон, достаточно в начале строки поставить %. Например:

Также можно инклюдить шаблоны из шаблонов, что позволяет нам красиво и опрятно содержать шаблоны.

POST-routing и обработка форм

Какой же нормальный фреймворк может существовать без возможности обработки POST запросов с последующей обработкой форм?
Механизм для обработки POST запросов абсолютно такой же, как и для обработки GET запросов, просто слово route нужно заменить на post:

Для доступа к формам используются атрибуты полей «name». Например:

Чтобы получить содержимое формы, нужно использовать следующую конструкцию:

Также можно обращаться и с файлами:

Cookies

Обращаться с Cookies в bottle очень просто, чтобы установить cookie:

Чтобы взять значение:

Сервер

    Создать файл adapter.wsgi с вот таким содержимым

Частые ошибки и их решения

    Если ваш сайт работает через apache, то нужно быть очень аккуратным в работе с путями, нужно всегда использовать полные пути. Мой вам совет: где-нибудь в начале кода правильно определите рабочий каталог, а дальше просто везде его используйте. Например, вот так:

Bottle — очень легкий фреймворк и помещается всего в один файл — bottle.py. Установить его можно отсюда, либо сделать pip install bottle.

Возможности

Несмотря на свою минималистичность, Bottle предоставляет довольно широкие возможности, которых на 100% хватает для мелких и средних проектов. Вот список основных возможностей:

Routing

Роутинг в bottle, как и в большинстве фреймворков на питоне, осуществляется с помощью декораторов. Например:

Также динамические url можно составлять на основе регулярных выражений:

Templates

Одна из сильнейших сторон фреймворка — механизм шаблонов. Чтобы воспользоваться шаблонизатором, достаточно написать такую легкую конструкцию:

Первый аргумент функции — название файла, в котором содержится текст шаблона (в нашем случае шаблон будет называться template_name.tpl).
В самом же файле нам нужно написать название переменной в двух фигурных скобках:

По-умолчанию сделано так, что если в скобках указан html код, то он не выполнится, во избежание XSS атак. Если же нам это очень надо, можно написать >. Также Bottle предоставляет нам очень очень крутую возможность: писать любой python код внутри шаблона. Чтобы вызвать питон, достаточно в начале строки поставить %. Например:

Также можно инклюдить шаблоны из шаблонов, что позволяет нам красиво и опрятно содержать шаблоны.

POST-routing и обработка форм

Какой же нормальный фреймворк может существовать без возможности обработки POST запросов с последующей обработкой форм?
Механизм для обработки POST запросов абсолютно такой же, как и для обработки GET запросов, просто слово route нужно заменить на post:

Для доступа к формам используются атрибуты полей «name». Например:

Чтобы получить содержимое формы, нужно использовать следующую конструкцию:

Также можно обращаться и с файлами:

Cookies

Обращаться с Cookies в bottle очень просто, чтобы установить cookie:

Чтобы взять значение:

Сервер

    Создать файл adapter.wsgi с вот таким содержимым

Частые ошибки и их решения

    Если ваш сайт работает через apache, то нужно быть очень аккуратным в работе с путями, нужно всегда использовать полные пути. Мой вам совет: где-нибудь в начале кода правильно определите рабочий каталог, а дальше просто везде его используйте. Например, вот так:

Легкий python веб-фреймворк – Bottle

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

Установка

Функционал

Хоть Bottle и столь минималистичен, у него много возможностей, которых вполне достаточно для проектов малого и среднего уровня. Вот основные его возможности:

Routing

В этом фреймворке, как и в многих на этом языке, реализуется через декораторы. К примеру:

Составление динамических url возможно и через регулярные выражения:

Templates

Одно из весомых преимуществ фреймворка – механизм шаблонов. Для использования шаблонизатора нужно написать простейшую конструкцию:

В функции первый аргумента – это наименование файла, который содержит текст шаблона (мы назвали его template_name.tpl). В самом файле нам необходимо указать наименование переменной с помощью двух фигурных скобок:

Стандартно настроено так, что при использовании в скобках html кода, выполняться он не будет, дабы избежать XSS атак. В случае сильной потребности в этом, можете писать так >. Кроме того, у Bottle есть очень крутая возможность: внутри шаблона можно написать любой python код. Для вызова питона строчка должна начинаться с %. К примеру:

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

Обработка форм и POST-routing

Хороший питон должен обязательно уметь работать с POST запросами и далее обрабатывать формы. POST запросы обрабатываются таким же образом, как и GET запросы, достаточно только вместо route использовать post:

Чтобы получить доступ к формам применяются атрибуты полей «name». К примеру:

Для получения содержимого формы, следует применить такую конструкцию:

Можем также работать с файлами:

Cookies

Чтобы взять значение:

Сервер

Конечно-же крупному проекту это не подойдет, поэтому нужно как-то связывать наш фреймфорк с nginx или apache. Разберем apache, но и с nginx все делается легко. Для связки Bootle с Apache используется mod_wsgi. Чтобы это сделать, делаем так:

  1. Создаем файл adapter.wsgi, в котором пишем:
  2. Устанавливаем и включаем mod_wsgi.
  3. Добавляем параметры виртуального хоста.

Распространенные ошибки, методы их решения

  • При использовании apache для вашего сайт, будьте аккуратными со всеми путями, они всегда должны быть полными. Рекомендуется вначале кода правильно определить рабочий каталог и дальше уже везде им пользоваться. К примеру, так:
  • Если шаблон берется из определенной папки (к примеру, views), обязательно должен добавляться полный путь к ней в перечень bottle.TEMPLATE_PATH.

Если вам нужна качественная стоматологическая клиника, обращайтесь в «Премьер Клиник». Хорошая стоматология метро ленинский проспект, в которой работают исключительно опытные врачи, и используется современное оборудование. Преимущества клиники – демократичные цены, высокое качество услуг и гарантия качества.

Читайте также: