веб2py
Эта статья может содержать чрезмерные или неуместные ссылки на самостоятельно опубликованные источники . ( Апрель 2024 г. ) |
Оригинальный автор(ы) | Массимо Ди Пьерро |
---|---|
Первоначальный выпуск | 27 сентября 2007 г |
Стабильная версия | 2.27.1 [1]
/ 16 ноября 2023 г |
Репозиторий | Репозиторий Web2py |
Написано в | Питон |
Платформа | Кросс-платформенный |
Тип | Фреймворк веб-приложений |
Лицензия | Меньшая стандартная общественная лицензия GNU версии 3 (LGPLv3) |
Веб-сайт | www.web2py.com |
Web2py — это с открытым исходным кодом, платформа веб-приложений написанная на Python языке программирования . Web2py позволяет веб-разработчикам программировать динамический веб-контент с помощью Python . Web2py разработан, чтобы помочь сократить количество утомительных задач веб-разработки, таких как разработка веб-форм с нуля, хотя веб-разработчик может создать форму с нуля. при необходимости [2]
Web2py изначально разрабатывался как обучающий инструмент с упором на простоту использования и развертывания . Поэтому у него нет файлов конфигурации на уровне проекта. Дизайн web2py был вдохновлен фреймворками Ruby on Rails и Django . Как и эти фреймворки, web2py ориентирован на быструю разработку , отдает предпочтение условному подходу к настройке и следует модель-представление-контроллер (MVC) архитектурному шаблону .
Обзор
[ редактировать ]Web2py — это полнофункциональная платформа , в которой есть встроенные компоненты для всех основных функций, в том числе:
- HTTP- запросы, HTTP-ответы, файлы cookie , сеансы ;
- несколько протоколов [3] HTML / XML , REST , ATOM и RSS , RTF и CSV , JSON , JSON-RPC и XML-RPC , AMF-RPC ( Flash / Flex ) и SOAP ; [4]
- СЫРОЙ API ;
- множественные механизмы аутентификации и управление доступом на основе ролей ;
- уровень абстракции базы данных (DAL), который динамически генерирует SQL и работает на нескольких совместимых базах данных;
- Оперативная память , диск и memcached на базе кэширование для обеспечения масштабируемости ;
- интернационализации ; поддержка
- jQuery для Ajax и пользовательского интерфейса ; эффектов
- автоматическое протоколирование ошибок с контекстом.
Web2py поощряет надежные методы разработки программного обеспечения, такие как
- шаблон модель -представление-контроллер (MVC);
- самоподчинение [5] веб -форм ;
- сеансы на стороне сервера ;
- безопасное обращение с загруженными файлами.
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.
Глобальная окружающая среда
[ редактировать ]Эта статья нуждается в дополнительных цитатах для проверки . ( ноябрь 2013 г. ) |
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. Другие предпочитают более специализированные инструменты, обеспечивающие отладку, рефакторинг и т. д.
- Aptana Studio со встроенным PyDev
- Затмение с PyDev
- Эрик со встроенным отладчиком. [27]
- Крыло IDE [28]
- Microsoft Visual Studio с инструментами Python для Visual Studio
- Pycharm 3 имеет поддержку платформы Web2py.
Обработка базы данных
[ редактировать ]Уровень абстракции базы данных ( 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
[ редактировать ]- на основе Python Компоненты :
- Rocket, быстрый, HTTP/1.1 -совместимый, многопоточный , поддерживающий SSL и потоковую передачу поддерживающий WSGI- сервер;
- fcgi.py: шлюз FastCGI / WSGI ;
- API входа в систему для Janrain, Dropbox, Google, LDAP, PAM, X509, CAS, OpenID, OAuth 1 и 2, Loginza
- simplejson: простой, быстрый, полный, правильный и расширяемый JSON ; кодер и декодер
- markdown2: процессор Markdown ;
- fpdf — библиотека для создания PDF-файлов;
- PyRTF: генератор документов RTF ;
- синтаксиса подсветка ;
- pysimplesoap для сервисов SOAP;
- PyRSS2Gen: генератор RSS ;
- Feedparser: для анализа каналов RSS и Atom .
- Компоненты на основе JavaScript :
- jQuery : облегченная библиотека JavaScript ;
- CodeMirror : бесплатный редактор исходного кода;
- Компоненты на основе C :
- SQLite : реляционная база данных ;
- memcached : универсальная система кэширования распределенной памяти.
- Платежный API для Authorize.Net, Google Wallet, Stripe.com
История и именование
[ редактировать ]Исходный код первой общедоступной версии 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
[ редактировать ]- Movuca CMS и движок социальных сетей.
- Instant Press Платформа блога .
- Ourway . Сайт социальной сети
- NoobMusic Сайт рок-музыки.
- LinkFindr Инструмент диагностики сети.
- StarMaker разрабатывает социальные музыкальные приложения в стиле караоке.
Примечания
[ редактировать ]- ^ «Веб-фреймворк web2py» .
- ^ Jump up to: а б «Что такое web2py?» . web2py.com . Веб2пи . Проверено 31 октября 2023 г.
- ^ Web2py поддерживает несколько протоколов, начиная с версии 1.63.
- ^ Использование SOAP с web2py
- ^ Написание умных веб-форм.
- ^ Ракетный веб-сервер
- ^ Онлайн-IDE Web2py с текстом! Аддон Firefox и Ulipad (IDE Python с открытым исходным кодом)
- ^ Как отлаживать приложения Web2py?
- ^ Wing IDE поддерживает отладку для web2py.
- ^ Eclipse/PyDev поддерживает отладку для web2py.
- ^ Использование web2py в Eclipse
- ^ С помощью Winpdb можно выполнять удаленную отладку через TCP/IP.
- ^ Зашифрованное общение в Winpdb.
- ^ Простейшая веб-страница с web2py: пример «Hello World».
- ^ Как использовать шаблоны web2py без web2py.
- ^ Использование шаблонов Joomla с web2py.
- ^ Web2py полностью работает на Java и J2EE с использованием Jython.
- ^ Web2py работает с IronPython на .NET с ограничениями.
- ^ MySQL с двоичным файлом web2py Windows на флэш-накопителе USB
- ^ Как запустить встроенный SSL-сервер
- ^ Web2py с Apache и mod_ssl
- ^ Web2py с Lighttpd и FastCGI
- ^ Web2py с чероки
- ^ Модуль Apache mod_proxy
- ^ Web2py с mod_proxy
- ^ Web2py с mod_proxy и mod_proxy_html.
- ^ Проект Эрика IDE
- ^ Использование Wing IDE с web2py.
- ^ Распределенные транзакции с PostgreSQL
- ^ Распределенные транзакции с PostgreSQL — подробнее.
- ^ Тест ORM
- ^ Как использовать web2py DAL без web2py
- ^ Лицензионное соглашение web2py
- ^ Грехан, Рик. «Столпы Python: сравнение шести веб-фреймворков Python» . Инфомир . Проверено 30 ноября 2017 г.
- ^ персонал, InfoWorld Reviews. «Лауреаты премии InfoWorld «Технология года 2012»» . Инфомир . Проверено 30 ноября 2017 г.
- ^ «web2py — официальное онлайн-руководство» . web2py.com . Проверено 14 ноября 2018 г.
- ^ "web2py/web2py-книга" . Гитхаб . Проверено 14 ноября 2018 г.
- ^ Список основных участников web2py