Web2py фрејмворк веб апликације отвореног кода написан у Пајтон програмском језику. Web2py allows дозвољава веб програмерима да програмирају динамични веб садржај коришћењем Пајтона. Web2py је дизајниран да помогне при смањењу тешких задатака развоја, као што је развој веб форми од нуле, иако би веб програмер направио форму од нуле да је то потребно.Web2py (2013), What is web2py?, web2py.com, retrieved 11 October 2013, <http://www.web2py.com/init/default/what>
Web2py је оригинално дизајниран као алатка учења са акцентом на лакоћу коришћења и распоређивања. Према томе, нема ниједан конфигурациони фајл на нивоу пројекта. Дизајн web2py-а је инспирисан од стране Ruby on Rails и Django фрејмворкова. Као ови фрејмворкови, web2py се фокусира на рапидни развој, стављајући акценат на конвенцију преко конфигурације приступ и прати МВЦ архитектуру..
Преглед Web2py је фрејмворк пуног стека који има уграђене компоненте за све главне функције, укључујући: HTTP захтеве, HTTP одговоре, колачиће, сесије; вишеструке протоколеWeb2py speaks multiple protocols since v1.63 HTML/XML, REST, ATOM и RSS, RTF, JSON, JSON-RPC и XML-RPC, (Flash/Flex), и SOAP;Using SOAP with web2py Create, read, update и delete АПИ; вишеструке механизме аутентификације и контролу приступа базирану на редовима; апстрактни слој базе података који динамично генерише SQL и покреће се на вишеструким компатибилним бек-енд базама података RAM, disk, и memcached-базирано кеширање за скалирање; интернационализацијска подршка; jQuery за Ajax и ефекте корисничког интерфејса; аутоматско чување грешака са контекстом. Web2py подстише звучни инжењеринг софтверских пракси као што су МВЦ образац; само-подношење веб форми; сесије са серверске стране; сигурно руковање постављених фајлова. Web2py се користи WSGI протоколом, Пајтон-оријентисаним протоколом за комуникацију између веб сервера и веб апликација. Такође обезбеђује руководиоице за CGI и FastCGI протоколе, и садржи више-нитни, SSL-омогућени RocketRocket Web Server wsgiserver.
Карактеристичне могућности
Веб-базирано интегрисано развојно окружење Сав равој, дебагинг, тестирање, одржавање и администрација даљинских база података могу (опционо) бити извршени без алатки трећих лица, преко веб интерфејса, саме web2py апликације. Интернационализација (додавање језика и писање превода) такође може бити извршена из овог интегрисаног развојног окружења. Свака апликација има аутоматски генерисани интерфејс адиминистрације, слично Django-у. Веб интегрисано развојно окружење такође укључује веб-базирано тестирање и веб-базирану љуску.
Апликације такође могу бити направљене из интерфејса командне линије или програмирани из других интегрисаних развојних окружења.Web2py online IDE with It's All Text! Даље опције дебаговања:How to debug Web2py applications? Wing IDE дозвољава графичко дебаговање web2py апликацијаWing IDE supports debugging for web2py док интерагујете са њим кроз ваш веб прегледач, можете проверити и мењати променљиве, правити потпрограмске позиве итд. Eclipse/PyDev — Eclipse са Aptana PyDev додатком — подржава web2py такође.Eclipse/PyDev supports debugging for web2pyUsing web2py on Eclipse Дебагер pdb који је могуће проширити је модул Пајтонове стандардне библиотеке. Са платформски-независним дебагером отвореног кода Winpdb, особа може извршити даљинско дебаговање преко TCP/IP, кроз кодирану конекцију. Hello World програм са web2py-ем у његовом најједноставнијем облику (једноставна веб страницаSimplest web page with web2py: "Hello World" example без шаблона) изгледа овако:def hello(): return 'Hello World'Web2py укључује језик шаблонирања базираног на Пајтону, без захтевања увлачења и моделом објектног документа са серверске стране (DOM). Систем шаблона ради без web2py-а.How to use web2py templates without web2py Joomla 1.x шаблони могу бити конвертовани у web2py пројекте.Using Joomla templates with web2py
Web2py такође укључује две библиотеке: markdown2 текст-до-HTML филтер, који конвертује Markdown маркауп до HTML-а у току покретања; и markmin који је инспирисан markdown-ом али подржава табеле, html5 видео/звучни и уграђени проткол.
Контролор без аутоматског прегледа користи генерични преглед који обрађује променљиве враћене од контролора, омогућавајући развој логике пословних апликација пре писања HTML-а. "Hello World" пример коришћењем подразумеваног шаблона:def hello(): return dict(greeting='Hello World')Излаз dict() акције је аутоматски обрађен у HTML-у ако је страница затражена са .html екстензијом, у JSON ако је страница затражена у .json екстензији, у XML-у ако је затражена са .xml. Подржава друге протоколе укључујући jsonp, rss, ics, google maps, итд. и могуће је проширити је.
Ево га више комплексан пример кода који дефинише табелу, и разоткрива решетку улогованим корисницима:db.define_table('thing',Field('name',notnull=True))
@auth.requires_login() def hello(): return dict(grid = SQLFORM.grid(db.thing))
Систем тикетирања Свака 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 се покреће на Windows, Windows CE телефонима, Mac, Unix/Linux, Google App Engine, Amazon EC2, и скоро било који веб хостинг преко Пајтона 2.4How to run web2py with Python 2.4/2.5/2.6/2.7.
Избачене верзије web2py-а укључују Пајтон 2.5, али изворна верзија може бити покренута на веријама од 2.4 до 2.7.
web2py од верзије v1.64.0 се покреће немодификован на Јави са Jython-ом 2.5, без било ког познатог ограничења.Web2py runs fully on Java and J2EE using Jython
web2py код може бити покренут са IronPython на .NET.Web2py runs with IronPython on . Ограничења: нема csv модула (дакле без базе података I/O); нема драјвера базе података трећих лица (чак нема ни SQLite, дакле без база података уопште); нема уграђених веб сервера (осим ако га онеспособите брисањем signals иlogging). Бинарни web2pyMySQL with web2py Windows binary on a USB thumb-drive ће се покренути са USB меморије или преносивог тврдог диска без зависности, као Преносиви Пајтон.
Веб сервери Web2py може сервисирати захтеве HTTP и HTTPS протокола са уграђеним Rocket сервером,How to run the built-in SSL server са Apache,Web2py with Apache and mod_ssl Lighttpd,Web2py with Lighttpd and FastCGI Cherokee,Web2py with Cherokee Hiawatha, Nginx и скоро било којим другим веб сервером кроз CGI, FastCGI, WSGI, mod proxy,Apache Module mod_proxyWeb2py with mod_proxyWeb2py with mod_proxy and mod_proxy_html и/или mod python.
Интегрисано развојно окружење и дебагери Док многобројни web2py програмери користе уређиваче текстова као што су Vim, Emacs или TextMate Web2py такође има уграђени веб базирано интегрисано развојно окружење. Остали преферирају више специјализоване алатке које доносе дебаговање, рефакторинг, итд. Aptana Studio са интегрисаним PyDev Eclipse са PyDev Wing IDEUsing Wing IDE with web2py Microsoft Visual Studio са Python Tools for Visual Studio Pycharm3 има Web2py фрејмворк подршку
Руковање базама података Апстрактни слој базе података web2py-а динамично и транспаретно генерише SQL упите и покреће се на вишеструким компатибилним бек-енд базама података без потребе за специфичним SQL командама базе података (иако SQL команде могу бити позване експлицитно).
SQLite је укључен у Пајтону као подразумевана web2py база података. Промена стринга конекције дозвољава конекцију на Firebird, IBM DB2, Informix, Ingres, Microsoft SQL Server, MySQL, Oracle, PostgreSQL, и Google App Engine (GAE) са неким упозорењима. Специјалитети: Вишеструке конекције база података. Аутоматско прављење табеле и њено мењање. Аутоматске трансакције. Дистрибуисане трансакције: Од верзије web2py v1.17 са PostgreSQL v8.2 и касније,Distributed transactions with PostgreSQL — further details зато што доноси АПИ за двофазно обавезизање. Од верзије web2py v1.70.1 са Firebird и MySQL (експериментално).