Jump to content

веб2py

web2py Корпоративная веб-платформа
Оригинальный автор(ы) Массимо Ди Пьерро
Первоначальный выпуск 27 сентября 2007 г .; 16 лет назад ( 27 сентября 2007 )
Стабильная версия
2.27.1 [1]  Отредактируйте это в Викиданных / 16 ноября 2023 г .; 8 месяцев назад ( 16 ноября 2023 г. )
Репозиторий Репозиторий Web2py
Написано в Питон
Платформа Кросс-платформенный
Тип Фреймворк веб-приложений
Лицензия Меньшая стандартная общественная лицензия GNU версии 3 (LGPLv3)
Веб-сайт www.web2py.com

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

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

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

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

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

Отличительные особенности

[ редактировать ]

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

[ редактировать ]

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

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

  • Wing IDE позволяет графическую отладку приложений web2py. [9] взаимодействуя с ним через веб-браузер, вы можете проверять и изменять переменные, выполнять вызовы функций и т. д.
  • Eclipse / PyDev — Eclipse с плагином Aptana PyDev — также поддерживает web2py. [10] [11]
  • Расширяемый отладчик pdb — это модуль стандартной библиотеки Python.
  • С помощью независимого от платформы отладчика Winpdb с открытым исходным кодом можно выполнять удаленную отладку. [12] через TCP/IP , через зашифрованное соединение. [13]

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

def hello():
    return 'Hello World'

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

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

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

def hello():
    return dict(greeting='Hello World')

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

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

db.define_table('thing',Field('name',notnull=True))

@auth.requires_login()
def hello():
    return dict(grid = SQLFORM.grid(db.thing))

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

[ редактировать ]

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

  • Если возникает ошибка, она регистрируется и пользователю выдается билет. Это позволяет отслеживать ошибки.
  • Ошибки и исходный код доступны только администратору, который может искать и получать ошибки по дате или IP-адресу клиента. Никакая ошибка не может привести к тому, что код станет доступен пользователям.

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

[ редактировать ]

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

  • Мягкий cron: процедуры cron проверяются после обработки содержимого веб-страницы, не гарантирует точность выполнения. Для непривилегированных установок Apache CGI/WSGI.
  • cron Жесткий cron: поток запускается при запуске web2py. Для Windows и Rocket/автономной установки web2py.
  • Системный cron: функции cron принудительно вызываются из командной строки , обычно из системного crontab. Для систем Unix/Linux и мест, где триггеры cron должны выполняться, даже если web2py в данный момент не запущен; также хорошо подходит для установок CGI/WSGI, если у вас есть доступ к системному 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] Ограничения:

  • нет модуля csv (поэтому нет ввода-вывода базы данных);
  • никаких сторонних драйверов баз данных (даже SQLite , поэтому баз данных вообще нет);
  • нет встроенного веб-сервера (если только вы не испортите его, удалив сигналы и журналируя ).

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

Веб-серверы

[ редактировать ]

Web2py может обслуживать запросы через HTTP и HTTPS с помощью встроенного сервера Rocket. [20] с Апачем , [21] Лайттпд , [22] Чероки , [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) с некоторыми оговорками. Специализации:

  • Несколько подключений к базе данных.
  • Автоматическая таблица создаёт и изменяет.
  • Автоматические транзакции .
  • Распределенные транзакции :
    • Начиная с web2py v1.17 с PostgreSQL v8.2 и более поздних версий, [29] [30] потому что он предоставляет API для двухфазных коммитов .
    • Начиная с web2py v1.70.1 с Firebird и MySQL (экспериментально).
  • GAE не является реляционным хранилищем, но web2py эмулирует определенные операции.

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.person.insert(name='Martin', image=open('filename.png'))
rows = db((db.person.name=='Martin')|db.person.name.contains('T')).select(orderby=db.person.name.lower())

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

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

[ редактировать ]

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

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

  • SQLite не может изменять таблицу и тип столбца, а просто сохраняет новые значения в соответствии с новым типом.
  • В GAE нет концепции таблицы изменений, поэтому миграция ограничена.

Лицензии

[ редактировать ]

Код 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 или в печатном виде.

  • 1-е издание: распродано . Уайли ; 16 сентября 2008 г.; 256 страниц; ISBN   978-0-470-43232-7 .
  • 2-е издание: Руководство по web2py. Уайли; 26 августа 2009 г.; 341 страница; ISBN   978-0-470-59235-9 .
  • 3-е издание: Лулу; 25 сентября 2010 г. 357 стр.
  • 4-е издание: Жемчуг; 9 декабря 2011 г. 583 страницы.
  • 5-е издание: Копия в формате PDF; 3 марта 2013 г. 614 стр.; ISBN   978-0-578-12021-8 .
  • последние онлайн-источники: на GitHub. [37]

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

[ редактировать ]

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

  • Шпаргалка по web2py.
  • web2pyslices — рецепты, опубликованные в социальной сети mouca в web2py.
  • Ускоренный курс Web2py (серия из 5 частей).
  • Слайды Web2py (старые).
  • Учебное пособие по web2py Enterprise Web Framework .
  • Видеоурок web2py «Перестрелка» .
  • web2py в приложении Google .
  • web2py: создание, редактирование и развертывание базового веб-приложения .

Печатный

[ редактировать ]
  • «Кулинарная книга по разработке приложений web2py», Packt, 2012 г.
  • Веб-программирование с помощью web2py ; Журнал «Питон» ; Марко Табини и партнеры, Inc.; июнь 2008 г.

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

[ редактировать ]

Ведущим разработчиком 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. ^ «Веб-фреймворк web2py» .
  2. ^ Jump up to: а б «Что такое 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
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 636020244989c3301274f38f93104e50__1721751720
URL1:https://arc.ask3.ru/arc/aa/63/50/636020244989c3301274f38f93104e50.html
Заголовок, (Title) документа по адресу, URL1:
web2py - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)