Web2py фрејмворк веб апликације отвореног кода написан у Пајтон програмском језику. Web2py allows дозвољава веб програмерима да програмирају динамични веб садржај коришћењем Пајтона. Web2py је дизајниран да помогне при смањењу тешких задатака развоја, као што је развој веб форми од нуле, иако би веб програмер направио форму од нуле да је то потребно.[2]
Web2py је оригинално дизајниран као алатка учења са акцентом на лакоћу коришћења и распоређивања. Према томе, нема ниједан конфигурациони фајл на нивоу пројекта. Дизајн web2py-а је инспирисан од стране Ruby on Rails и Django фрејмворкова. Као ови фрејмворкови, web2py се фокусира на рапидни развој, стављајући акценат на конвенцију преко конфигурације приступ и прати МВЦ архитектуру..
Преглед
Web2py је фрејмворк пуног стека који има уграђене компоненте за све главне функције, укључујући:
Web2py се користи WSGI протоколом, Пајтон-оријентисаним протоколом за комуникацију између веб сервера и веб апликација. Такође обезбеђује руководиоице за CGI и FastCGI протоколе, и садржи више-нитни, SSL-омогућени Rocket[6] wsgiserver.
Карактеристичне могућности
Веб-базирано интегрисано развојно окружење
Сав равој, дебагинг, тестирање, одржавање и администрација даљинских база података могу (опционо) бити извршени без алатки трећих лица, преко веб интерфејса, саме web2py апликације. Интернационализација (додавање језика и писање превода) такође може бити извршена из овог интегрисаног развојног окружења. Свака апликација има аутоматски генерисани интерфејс адиминистрације, слично Django-у. Веб интегрисано развојно окружење такође укључује веб-базирано тестирање и веб-базирану љуску.
Апликације такође могу бити направљене из интерфејса командне линије или програмирани из других интегрисаних развојних окружења.[7] Даље опције дебаговања:[8]
Wing IDE дозвољава графичко дебаговање web2py апликација[9] док интерагујете са њим кроз ваш веб прегледач, можете проверити и мењати променљиве, правити потпрограмске позиве итд.
Дебагер pdb који је могуће проширити је модул Пајтонове стандардне библиотеке.
Са платформски-независним дебагером отвореног кода Winpdb, особа може извршити даљинско дебаговање[12] преко TCP/IP, кроз кодирану конекцију.[13]
Hello World програм са web2py-ем у његовом најједноставнијем облику (једноставна веб страница[14] без шаблона) изгледа овако:
defhello():return'Hello World'
Web2py укључује језик шаблонирања базираног на Пајтону, без захтевања увлачења и моделом објектног документа са серверске стране (DOM).
Систем шаблона ради без web2py-а.[15]Joomla 1.x шаблони могу бити конвертовани у web2py пројекте.[16]
Web2py такође укључује две библиотеке: markdown2 текст-до-HTML филтер, који конвертује Markdown маркауп до HTML-а у току покретања; и markmin који је инспирисан markdown-ом али подржава табеле, html5 видео/звучни и уграђени проткол.
Контролор без аутоматског прегледа користи генерични преглед који обрађује променљиве враћене од контролора, омогућавајући развој логике пословних апликација пре писања HTML-а. "Hello World" пример коришћењем подразумеваног шаблона:
defhello():returndict(greeting='Hello World')
Излаз dict() акције је аутоматски обрађен у HTML-у ако је страница затражена са .html екстензијом, у JSON ако је страница затражена у .json екстензији, у XML-у ако је затражена са .xml. Подржава друге протоколе укључујући jsonp, rss, ics, google maps, итд. и могуће је проширити је.
Ево га више комплексан пример кода који дефинише табелу, и разоткрива решетку улогованим корисницима:
Свака web2py апликација долази са системом тикетирања:
Ако се догоди грешка, сачувана је и тикет је приказан кориснику. То омогућава праћење грешки.
Грешке и изворни кодови су доступни само администраторима, који могу претраживати и преузимати грешке по датуму или интернет адресе клијента. Ниједна грешка не може резултовати приказивањем кода корисницима.
Преносиви крон
Крон је механизам за прављење и покретање понављајућих задатака у позадини. Претражује crontab фајл специфичног за апликацију кои је сандардни crontab формат. Три мода операција су доступна:
Меки крон: крон рутине су проверене после приказивања садржаја веб странице, не гарантује прецизност извшења. За непривилиговане Apache CGI/WSGI инсталације.
Тврди крон: нит крона почиње приликом покретања web2py-а. За Windows и Rocket/самосталне web2py инсталације.
Системски крон: крон потпрограми бивају принудно позвани из интерфејса командне линије, обично из системског crontab-а. За Unix/Linux системе где крон мора бити извршен иако web2py није покренут у том тренутку; такође добро за CGI/WSGI инсталације ако имате приступ системском crontab-у.
Заказивач задатака
Од верзије 2.3 коришћење крона је обесхрабрено откад web2py долази са шефовским/радничким заказивачем задатака. Послови могу бити дефинисани у моделима и заказивани су прављењем податка у бази података. Корисници могу започети процесе који купе и извршавају задатке у позадини. Распоред је бољи него крон зато што дозвољава да се дефинишу више параметара (време покретања, време престанка, број понављања, број суђења у случају грешке) и ради бољи посао приликом покретања са константним коришћењем извора.
Bytecode дистрибуција
Web2py може да компајлује веб апликације за дистрибуцију у bytecode компајлованој форми, без изворног кода. Насупрот фрејмворковима који користе специјализоване језике за своје прегледе, Web2py може такође компајловати прегледајући код у bytecode, пошто је то чист Пајтон код.
Глобално окружење
Web2py је јединствен у свету Пајтон веб фрејмворкова зато што модели и контролори су извршени, а не увезени. Они нису модули. Они су извршени у једном глобалном окружењу које је иницијализовано приликом сваког http захтева. Ова одлука дизајна има своје предности и мане.
Главна предност се једноставност развоја, специфично за рапидни прототајпинг. Још једна предност је та што сви објекти дефинисани у окружењу су чисто ресетовани приликом сваког http захтева и никада нису дељени кроз захтеве. Ово значи да програмер не мора да брине око промене стања објекта (на пример читљиви атрибут поља базе података) или да брине о цурењу промене на друге конкурентске захтеве или друге апликације. Трећа предност је та што web2py дозвољава постојање вишеструких апликација под истом инстанцом без конфликта чак иако користе различите верзије истог модула или различите модуле са истим именом.
Главна мана глобалног окружења је та што фајлови модела и фајлови контролора нису модули и редослед извршења је битан (иако може бити одређен коришћењем условних модела). Конфликти именовања се чешће дешавају него у нормалним Пајтон модулима. Неке стандардне Пајтон развојне алатке неће разумети дефинисане у моделима и контролорима. Штавише, програмери морају имати у виду да код у моделима је извршен приликом сваког захтева и ово може утицати на перформансе негативно. Ништа ту web2py-у не спречава програмере од коришћења и увожења нормалних Пајтон мнодула (приступ без модела) и за ову сврху web2py омогућава нит локалног објекта (тренутни) да олакша приступ објектима повезаним са тренутним захтевом. Али, у овом случају, програмер мора знати да постоје мане на које други фрејмворкови могу налетети: промена стања објекта дефинисаног у модулу може деловати на друге конкурентске захтеве.
Још једна мана је та да, зато што модели и контролори нису базирани на класама, ефикасно поновно коришћење кода је много теже, поготово као немогућност наслеђа од родитељског контролора (нпр. ApplicationController у Ruby on Rails) значи да честа функционалност контролора мора имати референцу кроз све фајлове контролора.
Подржана окружења
Оперативни системи, Пајтон верзије и имплементације, виртуелне машине, хардвери
Док многобројни web2py програмери користе уређиваче текстова као што су Vim, Emacs или TextMate Web2py такође има уграђени веб базирано интегрисано развојно окружење. Остали преферирају више специјализоване алатке које доносе дебаговање, рефакторинг, итд.
Апстрактни слој базе података web2py-а динамично и транспаретно генерише SQL упите и покреће се на вишеструким компатибилним бек-енд базама података без потребе за специфичним SQL командама базе података (иако SQL команде могу бити позване експлицитно).
Web2py имплементује DAL, не ОРМ. ОРМ базе података мапа се претварају у табеле класа презентујући се као логичке апстракције из слоја базе подтака (нпр., корисничка класа или PurchaseOrder класа), и мапе се чувају у инстанцама тих класа. DAL уместо мапа базе података их претвара у табеле и чува их у инстанцама класа презентујући сетове и рекорде уместо апстракција вишег нивоа. Има веома сличну синтаксу према ОРМ али бржу, и може мапирати скоро сваки SQL израз у DAL израз. DAL може бити коришћен независно од остатка web2py-а.[32]
Последња верзија DAL-а подржава 2D GIS функције са Spatialite и PostGIS. Тренутни АПИ је експерименталан због могућег премештања на 3D АПИ.
Аутоматско мигрирање базе података
web2py подржава миграције базе података — промена описа табеле и web2py мења ту табелу у складу са њом. Миграције су аутоматске, али могу бити искључене за било коју табелу, и миграција је типично искључена када је апликација спремна за дистрибуцију у реалном времену. Миграције и покушају миграција су сачувану, документујућу промене.
Ограничења:
SQLite не може мењати табелу и мењати тип колоне, већ само да додаје нове вредноси у складу са новим типом.
GAE нема концепт мењања табеле, тиме су миграције ограничене.
Публикације
web2py књига
Базна web2py документација је The Official web2py Book, од Масимо ДиПијера. Приручник је доступан у PDF формату или у одштампаном облику.
1st Edition: out of print. Wiley; September 16, 2008; 256 pages;. ISBN978-0-470-43232-7..
Онлајн документација је повезана из web2py званичне странице, са видео снимцима, интерактивним примерима, интерактивним референцама АПИ-а, epydoc (потпуна библиотека референци), FAQ, папир варања, онлајн алаткама итд.
Web programming with web2py; Python Magazine; Marco Tabini & Associates, Inc.; June 2008
Позадина
Подршка
Подршка заједнице је доступна кроз web2py базу, web2py поштанску листу над Google Groups, и #web2py канал на freenode-у.[33] Од 2. октобра 2010, комерцијална web2py подршка је доступна од стране 15 компанија широм света.[34]
АПИ наплата за Authorize.Net, Google Wallet, Stripe.com
Историја и именовање
Изворни код за прву јавну верзију web2py-а је објављена под GNU GPL v2.0 27. септембра 2007. од стране Масима ДиПијера као Фрејмворк на пословном нивоу Framework (EWF). Име је промењено два пута звог конфликта имена: EWF v1.7 је био праћен са Gluon v1.0, и Gluon v1.15 је био праћен са web2py v1.16. Лиценца је промењена у LGPLv3 од верзије web2py 1.91.1 21. децембра 2010.