stringtranslate.com

веб2py

Web2py — это платформа веб-приложений с открытым исходным кодом , написанная на языке программирования Python . Web2py позволяет веб-разработчикам программировать динамический веб-контент с помощью Python . Web2py разработан, чтобы помочь сократить утомительные задачи веб-разработки, такие как разработка веб-форм с нуля, хотя веб-разработчик может при необходимости создать форму с нуля. [2]

Web2py изначально разрабатывался как обучающий инструмент с упором на простоту использования и развертывания . Поэтому у него нет файлов конфигурации на уровне проекта. Дизайн web2py был вдохновлен фреймворками Ruby on Rails и Django . Как и эти фреймворки, web2py ориентирован на быструю разработку , отдает предпочтение условному подходу к настройке и следует архитектурному шаблону модель-представление-контроллер (MVC) .

Обзор

Web2py — это полнофункциональная платформа, в которой есть встроенные компоненты для всех основных функций, в том числе:

Web2py поощряет надежные методы разработки программного обеспечения , такие как

Web2py использует протокол WSGI , ориентированный на Python протокол для связи между веб-сервером и веб-приложениями. Он также предоставляет обработчики для протоколов CGI и FastCGI , а также включает в себя многопоточный Rocket [6] wsgiserver с поддержкой SSL .

Отличительные черты

Интегрированная веб-среда разработки (IDE)

Вся разработка , отладка , тестирование , обслуживание и удаленное администрирование базы данных могут (опционально) выполняться без сторонних инструментов, через веб-интерфейс, который сам по себе является приложением web2py. Интернационализацию (добавление языков и написание переводов) также можно выполнить из этой IDE . Каждое приложение имеет автоматически создаваемый административный интерфейс базы данных, аналогичный Django . Веб-IDE также включает в себя веб-тестирование.

Приложения также можно создавать из командной строки или разрабатывать с помощью других IDE. [7] Дополнительные возможности отладки: [8]

Программа Hello World с web2py в своей простейшей форме (простая веб-страница [14] без шаблона) выглядит так:

def  hello ():  вернуть  «Hello World»

Web2py включает в себя чистый язык шаблонов на основе Python без требований к отступам и объектную модель документа на стороне сервера ( DOM ). Система шаблонов работает без web2py. [15] Шаблоны Joomla 1.x можно конвертировать в макеты web2py. [16]

Web2py также включает в себя две библиотеки разметки: фильтр преобразования текста в HTML markdown2, который на лету преобразует разметку Markdown в HTML ; и markmin, который создан на основе уценки, но поддерживает таблицы, видео/аудио html5 и протокол oembed.

Контроллер без представления автоматически использует общее представление, которое отображает переменные, возвращаемые контроллером, что позволяет разработать бизнес-логику приложения перед написанием HTML. Пример «Hello World» с использованием шаблона по умолчанию:

def  hello ():  return  dict ( приветствие = 'Hello World' )

Вывод действия dict() автоматически отображается в HTML, если страница запрашивается с расширением .html, в JSON, если страница запрашивается с расширением .json, в XML, если запрашивается с .xml. Он поддерживает другие протоколы, включая jsonp, rss, ics, карты Google и т. д., и является расширяемым.

Вот более сложный пример кода, который определяет таблицу и предоставляет сетку вошедшим в систему пользователям:

дб . define_table ( 'вещь' , Поле ( 'имя' , notnull = True ))@авт . require_login ( ) def  hello ( )  : return  dict ( grid  =  SQLFORM.grid ( db.thing ) )

Билетная система

Каждое приложение web2py поставляется с системой заявок :

Портативный cron

Cron — это механизм создания и выполнения повторяющихся задач в фоновом режиме. Он ищет файл crontab для конкретного приложения в стандартном формате crontab. Доступны три режима работы:

Планировщик

Начиная с версии 2.3, использование cron не рекомендуется, поскольку web2py поставляется с планировщиком главный/рабочий. Задания можно определить в моделях и планировать путем создания записи в базе данных. Пользователи могут запускать рабочие процессы, которые собирают и выполняют задачи в фоновом режиме. Расписание лучше, чем cron, потому что оно позволяет указать больше параметров (время запуска, время остановки, количество повторений, количество попыток в случае ошибки) и лучше выполнять работу при постоянном использовании ресурсов.

Распределение байт-кода

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

Глобальная окружающая среда

Web2py уникален в мире веб-фреймворков Python, поскольку модели и контроллеры выполняются, а не импортируются. Это не модули. Они выполняются в единой глобальной среде, которая инициализируется при каждом HTTP-запросе. У этого дизайнерского решения есть плюсы и минусы.

Главный плюс — простота разработки, особенно для быстрого прототипирования. Еще одним преимуществом является то, что все объекты, определенные в этой среде, полностью сбрасываются при каждом HTTP-запросе и никогда не передаются между запросами. Это означает, что разработчику не нужно беспокоиться об изменении состояния объекта (например, читаемого атрибута поля базы данных) или беспокоиться об утечке изменений в другие параллельные запросы или другие приложения. Третье преимущество заключается в том, что web2py позволяет сосуществовать нескольким приложениям в одном экземпляре без конфликтов, даже если они используют разные версии одних и тех же модулей или разные модули с одним и тем же именем.

Основным недостатком глобальной среды является то, что файлы моделей и файлы контроллеров не являются модулями и порядок выполнения имеет значение (хотя его можно указать с помощью условных моделей). Конфликт имен может возникнуть чаще, чем в обычных модулях Python. Некоторые стандартные инструменты разработки Python могут не понимать объекты, определенные в моделях и контроллерах. Более того, разработчики должны знать, что код в моделях выполняется при каждом запросе, и это может привести к снижению производительности. Ничто в web2py не мешает разработчикам использовать и импортировать обычные модули Python (безмодельный подход), и для этой цели web2py предоставляет локальный объект потока (текущий) для облегчения доступа к объектам, связанным с текущим запросом. Однако в этом случае разработчик должен знать о тех же ловушках, с которыми сталкиваются другие платформы: изменение состояния объекта, определенного в модуле, может повлиять на другие параллельные запросы.

Еще один минус заключается в том, что, поскольку модели и контроллеры не основаны на классах, эффективное повторное использование кода становится более трудным, особенно потому, что невозможность наследования от родительского контроллера (например, ApplicationController в Ruby on Rails) означает, что к общим функциям контроллера придется обращаться неоднократно. во всех файлах контроллера.

Поддерживаемые среды

Операционные системы, версии и реализации Python, виртуальные машины, оборудование

web2py работает на Windows , телефонах Windows CE , Mac , Unix / Linux , Google App Engine , Amazon EC2 и практически на любом веб-хостинге через Python 2.7/3.5/3.6/pypy. [2]

Текущая двоичная версия web2py (для Windows или Mac) включает Python 2.7, но исходную версию можно запускать на версиях 2.7 и 3.5+. Поддержка Python 2.6 прекращена в 2017 году.

web2py, поскольку версия 1.64.0 работает без изменений на Java с Jython 2.5, без каких-либо известных ограничений. [17]

Код web2py может работать с IronPython на .NET . [18] Ограничения:

Бинарный файл web2py [19] будет запускаться с USB-накопителя или переносного жесткого диска без каких-либо зависимостей, например, Portable Python.

Веб-серверы

Web2py может обслуживать запросы через HTTP и HTTPS с помощью встроенного сервера Rocket, [20] с помощью Apache , [21] Lighttpd , [22] Cherokee , [23] Hiawatha , Nginx и практически любого другого веб-сервера через CGI , FastCGI , WSGI . , mod_proxy , [24] [25] [26] и/или mod_python .

IDE и отладчики

Хотя многие разработчики web2py используют текстовые редакторы , такие как Vim , Emacs или TextMate , Web2py также имеет встроенную веб-среду IDE. Другие предпочитают более специализированные инструменты, обеспечивающие отладку, рефакторинг и т. д.

Обработка базы данных

Уровень абстракции базы данных ( DAL ) web2py динамически и прозрачно генерирует SQL-запросы и работает на нескольких совместимых базах данных без необходимости использования SQL-команд для конкретной базы данных (хотя команды SQL можно вводить явно).

SQLite включен в Python и является базой данных web2py по умолчанию. Изменение строки подключения позволяет подключаться к Firebird , IBM Db2 , Informix , Ingres , Microsoft SQL Server , MySQL , Oracle , PostgreSQL и Google App Engine (GAE) с некоторыми оговорками. Специальности:

DAL работает быстро, по крайней мере, сравнимо с SQLAlchemy и Storm . [31]

Web2py реализует DAL, а не ORM . ORM отображает таблицы базы данных в классы , представляющие логические абстракции уровня базы данных (например, класс User или класс PurchaseOrder), и отображает записи в экземпляры этих классов. Вместо этого DAL отображает таблицы и записи базы данных в экземпляры классов, представляющих наборы и записи, а не абстракции более высокого уровня. Его синтаксис очень похож на ORM, но он быстрее и может отображать практически любые выражения SQL в выражения DAL. DAL можно использовать независимо от остальной части web2py. [32]

Вот несколько примеров синтаксиса DAL:

db  =  DAL ( 'postgresql://user:pass@localhost/db' ,  pool_size = 10 ) db . define_table ( 'person' , Field ( 'name' ), Field ( 'image' , 'upload' )) db . человек . вставить ( имя = ' Мартин' , изображение  = открыть ( ' имя_файла.png ' ) ) rows =  db  ( ( db.person.name == ' Мартин ' ) | db.person.name.содержит ( ' T ' ) ) . выберите ( orderby = db . person . name . low ())

Последняя версия DAL поддерживает функции 2D ГИС с помощью Spatialite и PostGIS. Текущий API является экспериментальным из-за возможного перехода на 3D API.

Автоматическая миграция баз данных

web2py поддерживает миграцию базы данных — измените определение таблицы, и web2py соответствующим образом ИЗМЕНИТ таблицу. Миграция происходит автоматически, но ее можно отключить для любой таблицы, а миграция обычно отключается, когда приложение готово к оперативному распространению. Миграции и попытки миграции протоколируются, документируя изменения.

Ограничения:

Лицензии

Код Web2py выпускается под лицензией GNU Lesser General Public License (LGPL) версии 3, начиная с версии web2py 1.91.1. [33]

Код Web2py до версии 1.91.1 был выпущен под лицензией GNU GPL v2.0 за коммерческим исключением.

Различные сторонние пакеты, распространяемые вместе с web2py, имеют свои собственные лицензии, обычно общедоступные , MIT или BSD . На приложения, созданные с помощью web2py, не распространяется лицензия LGPL.

Авторские права на Web2py принадлежат Массимо ДиПьерро. Торговая марка web2py принадлежит Массимо ДиПьерро.

Награды

В 2011 году InfoWorld поставил web2py на первое место среди шести лучших веб-фреймворков Python, а также наградил web2py наградой Bossie 2011 за лучшее программное обеспечение для разработки приложений с открытым исходным кодом. В 2012 году web2py получил награду InfoWorld Technology of the Year. [34] [35]

Публикации

книга web2py

Базовая документация по web2py — это официальная книга по web2py, написанная Массимо ДиПьерро. Руководство представляет собой полноценное приложение web2py и свободно доступно в Интернете [36] в формате PDF или в печатном виде.

Онлайн-документация

Онлайн-документация доступна на домашней странице web2py и включает в себя кулинарную книгу , видеоролики, интерактивные примеры, интерактивный справочник по API, epydoc (полный справочник по библиотеке), часто задаваемые вопросы , шпаргалку , онлайн-инструменты и т. д.

Видео

Печатный

Фон

Разработчики

Ведущим разработчиком web2py является Массимо ДиПьерро, доцент кафедры компьютерных наук Университета ДеПола в Чикаго . По состоянию на 2011 год на домашней странице web2py перечислено более 70 «основных участников». [38]

Исходный код разработки

Исходный код разработки web2py доступен в основном репозитории:

Стороннее программное обеспечение, включенное в web2py

История и именование

Исходный код первой общедоступной версии web2py был выпущен под лицензией GNU GPL v2.0 27 сентября 2007 г. Массимо ДиПьерро как Enterprise Web Framework (EWF). Имя менялось дважды из-за конфликтов имен: за EWF v1.7 следовал Gluon v1.0, а за Gluon v1.15 — web2py v1.16. Лицензия была изменена на LGPLv3 начиная с версии web2py 1.91.1 от 21 декабря 2010 г.

Приложения, созданные на Web2py

Примечания

  1. ^ Ошибка: невозможно правильно отобразить ссылку. Подробности смотрите в документации .
  2. ^ ab «Что такое web2py?». web2py.com . Веб2пи . Проверено 31 октября 2023 г.
  3. ^ Web2py поддерживает несколько протоколов, начиная с версии 1.63.
  4. ^ Использование SOAP с web2py
  5. ^ Написание умных веб-форм.
  6. ^ Ракетный веб-сервер
  7. ^ Онлайн-IDE Web2py с текстом! Аддон Firefox и Ulipad (IDE Python с открытым исходным кодом)
  8. ^ Как отлаживать приложения Web2py?
  9. ^ Wing IDE поддерживает отладку для web2py.
  10. ^ Eclipse/PyDev поддерживает отладку для web2py.
  11. ^ Использование web2py в Eclipse
  12. ^ С помощью Winpdb можно выполнять удаленную отладку через TCP/IP.
  13. ^ Зашифрованное общение в Winpdb.
  14. ^ Простейшая веб-страница с web2py: пример «Hello World».
  15. ^ Как использовать шаблоны web2py без web2py.
  16. ^ Использование шаблонов Joomla с web2py.
  17. ^ Web2py полностью работает на Java и J2EE с использованием Jython.
  18. ^ Web2py работает с IronPython на .NET с ограничениями.
  19. ^ MySQL с двоичным файлом web2py Windows на флэш-накопителе USB
  20. ^ Как запустить встроенный SSL-сервер
  21. ^ Web2py с Apache и mod_ssl
  22. ^ Web2py с Lighttpd и FastCGI
  23. ^ Web2py с чероки
  24. ^ Модуль Apache mod_proxy
  25. ^ Web2py с mod_proxy
  26. ^ Web2py с mod_proxy и mod_proxy_html.
  27. ^ Проект Эрика IDE
  28. ^ Использование Wing IDE с web2py.
  29. ^ Распределенные транзакции с PostgreSQL
  30. ^ Распределенные транзакции с PostgreSQL — подробнее.
  31. ^ Тест ORM
  32. ^ Как использовать web2py DAL без web2py
  33. ^ Лицензионное соглашение web2py
  34. ^ Грехан, Рик. «Столпы Python: сравнение шести веб-фреймворков Python». Инфомир . Проверено 30 ноября 2017 г.
  35. ^ сотрудники, InfoWorld Reviews. «Лауреаты премии InfoWorld «Технология года 2012»». Инфомир . Проверено 30 ноября 2017 г.
  36. ^ «web2py — Официальное онлайн-руководство» . web2py.com . Проверено 14 ноября 2018 г.
  37. ^ "web2py/web2py-книга" . Гитхаб . Проверено 14 ноября 2018 г.
  38. ^ Список основных участников web2py

Внешние ссылки