Web2py

web2py
Típusú keretrendszer webes alkalmazások fejlesztéséhez
Szerző Massimo di Pierro
Fejlesztő web2py fejlesztők
Beírva Piton
Első kiadás 2007. szeptember 27 ( 2007-09-27 )
Hardver platform platformközi
legújabb verzió
Állapot Aktív
Engedély GNU Lesser General Public License 3. verzió (LGPLv3)
Weboldal web2py.com
levelezőlista

A web2py  egy nyílt forráskódú webalkalmazás-fejlesztési keretrendszer, amely Python programozási nyelven íródott . A Web2py lehetővé teszi a webfejlesztők számára, hogy Python segítségével dinamikus webhelyeket hozzanak létre. A Web2py célja, hogy csökkentse a webfejlesztési feladatokat, például a webes űrlapok írását a semmiből, bár a fejlesztők a semmiből is megtervezhetik az űrlapot, ha szükséges. [3]

A Web2py-t eredetileg tanulási eszköznek tervezték, amely a használhatóságra és a könnyű implementációra összpontosított, mivel hiányoznak a projektkonfigurációs fájlok. A web2py architektúrát a Ruby on Rails (RoR) és a Django keretrendszer befolyásolta . Ezekhez a keretrendszerekhez hasonlóan a web2py is a gyors fejlesztésre irányul , konvenciót állít a konfiguráció felett , és követi a Model-View-Controller (MVC) tervezési mintát .

Áttekintés

A Web2py egy teljes funkcionalitású keretrendszer, amely beépített összetevőkkel rendelkezik az összes főbb funkcióhoz, beleértve:

A Web2py a legjobb szoftverfejlesztési gyakorlatot ösztönzi, nevezetesen:

A Web2py a WSGI -t , egy Python-alapú protokollt használ a webszerver és a webalkalmazások közötti kommunikációhoz . A CGI és FastCGI protokollokhoz kezelők is rendelkezésre állnak, és egy többszálas , SSL -kompatibilis WSGI -kiszolgáló, a Rocket [7] is megtalálható .

Megkülönböztető jellemzők

Web Integrated Development Environment (IDE)

A távoli adatbázis fejlesztésének , hibakeresésének , tesztelésének , támogatásának és adminisztrációjának teljes folyamata (ha szükséges) külső eszközök nélkül is végrehajtható a webes felületen keresztül, amely egy web2py alkalmazás. A nemzetköziesítés (nyelvek hozzáadása és fordítás) is elvégezhető ebből az IDE -ből . Minden alkalmazáshoz tartozik egy automatikusan generált adatbázis-adminisztrációs felület, a Django -hoz hasonlóan . A webes IDE teszteszközöket és webkonzolt is tartalmaz .

Az alkalmazások parancssorból is létrehozhatók, és harmadik féltől származó IDE-k segítségével írhatók. [8] További hibakeresési lehetőségek állnak rendelkezésre: [9]

A klasszikus Hello World web2py program a legegyszerűbb formájában (meztelen weblap [15] lesz látható sablon nélkül) így néz ki:

def hello (): vissza a „Hello World”

A Web2py tartalmaz egy tisztán Python-alapú sablonnyelvet , amely nem igényli a behúzást , és egy szerveroldali dokumentumobjektum-modellt ( DOM ).

A sablonmotor a web2py-től külön is használható. [16] A Joomla 1.x sablonok konvertálhatók web2py sablonokká. [17]

A Web2py két jelölőkönyvtárat is tartalmaz: a markdown2 szűrőt archiválva : 2014. március 19. a Wayback Machine -nél szövegből HTML-be, amely menet közben konvertálja a Markdown jelölést HTML -vé ; and markmin Archivált : 2014. március 19. a Wayback Machine -en , hasonló az előzőhöz, de támogatja mindkét táblát, a html5 videó/audió és az oembed protokollt.

A vezérlő megfelelő nézet hiányában automatikusan egy univerzális nézetet használ, amely megjeleníti a vezérlő által visszaadott változókat, így lehetővé teszi az alkalmazás üzleti logikájának fejlesztését a HTML elrendezés megírása előtt. Példa a „Hello World”-re az alapértelmezett sablon használatával:

def hello (): return dict ( köszönés = 'Hello World' )

A művelet (függvény) által visszaadott dict() érték automatikusan HTML-ként jelenik meg, ha az oldalt .html kiterjesztéssel kéri, JSON-ként, ha az oldalt .json kiterjesztéssel kéri, XML-ként, ha az oldalt a .json kiterjesztéssel kéri. .xml kiterjesztéssel. Egyéb protokollok, például jsonp, rss, ics, google maps stb. támogatottak és bővíthetők.

Az alábbiakban egy bonyolultabb példa látható a kódra, amely meghatároz egy táblázatot, és lehetővé teszi a regisztrált felhasználók számára a mezők szerkesztését:

db . define_table ( 'dolog' , Mező ( 'név' , notnull = igaz )) @auth . request_login () def hello (): return dict ( grid = SQLFORM . grid ( db . dolog ))

Hibakövető rendszer

Minden web2py alkalmazáshoz hibakövető tartozik :

  • Ha hiba történik, az a naplókba kerül, és egy üzenet jelenik meg a felhasználó számára, amely lehetővé teszi a hibák nyomon követését.
  • A hibák és a forráskód csak az adminisztrátor számára érhető el, aki dátum és ügyfél IP-cím alapján kereshet rájuk. Semmilyen hiba nem okozhatja a kód megnyitását a felhasználók számára.

Gépfüggetlen cron

A Cron egy olyan mechanizmus, amellyel ismétlődő feladatokat hozhatunk létre és futtathatunk a háttérben. Megkeresi az alkalmazás crontab fájlját a szabványos crontab formátumban. Három üzemmód áll rendelkezésre:

  • Soft cron: a cron rutinokat a weboldal tartalmával való munka után ellenőrizzük, nem garantálja a pontos végrehajtást. Az Apache CGI/WSGI nem privilegizált telepítéseihez.
  • Hard cron: A cron szál a web2py indításakor indul el. Windows és Rocket/önálló web2py számára.
  • System cron: a cron a parancssorból fut , általában a rendszer crontab lapjáról. Unix/Linux rendszerekhez és olyan helyekhez, ahol cron triggereket kell futtatni, még akkor is, ha a web2py éppen nem fut; CGI/WSGI-hez is jó, ha hozzáférsz a rendszer crontabhoz.

Feladatütemező

A 2.3-as verziótól kezdve a cron használata elavult, mivel a web2py ütemezővel érkezik. A feladatok modellekben definiálhatók és ütemezhetők egy bejegyzés létrehozásával az adatbázisban. A felhasználók elindíthatnak olyan folyamatokat, amelyek a háttérben végeznek feladatokat. Az ütemező jobb, mint a cron, mert lehetővé teszi több paraméter beállítását (kezdési időpont, befejezési idő, ismétlések száma, hibakísérletek száma), és jobban működik az erőforrások állandó felhasználásával.

Elosztás bájtkód formában

A Web2py képes webalkalmazásokat fordítani bájtkódban , forráskód nélkül terjesztésre. A speciális sablonnyelveket használó keretrendszerekkel ellentétben a Web2py kódot is tud bájtkódba fordítani, mivel az tiszta Python-kód.

Globális futásidejű

A Web2py egyedülálló a Python webes keretrendszerek világában, mivel a modelleket és a vezérlőket végrehajtják, nem importálják. Ezek nem modulok. Ezeket egyetlen globális környezetben hajtják végre, amelyet minden http kérésnél inicializálnak. Ennek a tervezési döntésnek vannak előnyei és hátrányai.

A fő előnyök a könnyű fejlesztés, különösen a gyors prototípuskészítéshez. Egy másik előny az, hogy az ebben a környezetben definiált összes objektumot minden http kéréskor alaphelyzetbe állítják, és soha nem osztják meg a kérések között. Ez azt jelenti, hogy a fejlesztőnek nem kell aggódnia egy objektum állapotának megváltoztatása miatt (például egy adatbázismező olvasható attribútuma), vagy amiatt, hogy a változás más egyidejű kérésekbe vagy más alkalmazásokba szivárog. A harmadik előny az, hogy a web2py lehetővé teszi több alkalmazás együttélését ugyanazon a példányon belül ütközések nélkül, még akkor is, ha ugyanazon modulok különböző verzióit vagy azonos nevű modulokat használnak.

A globális környezet fő hátránya, hogy a modellfájlok és a vezérlőfájlok nem modulok, és a végrehajtás sorrendje számít (bár ez feltételes modellekkel megadható). Az elnevezési ütközések nagyobb valószínűséggel fordulnak elő, mint a normál Python-modulokban. Előfordulhat, hogy egyes szabványos Python fejlesztőeszközök nem értik a modellekben és vezérlőkben meghatározott objektumokat. Ezenkívül a fejlesztőknek tisztában kell lenniük azzal, hogy a modellekben található kód minden kérésre lefut, és ez teljesítménybüntetést okozhat. A web2py-ben semmi sem akadályozza meg a fejlesztőket abban, hogy normál Python-modulokat használjanak és importáljanak (modell nélküli megközelítés), és erre a célra a web2py egy szál helyi objektumot biztosít (aktuális), amely megkönnyíti az aktuális kéréshez társított objektumok elérését. Ebben az esetben azonban a fejlesztőnek tisztában kell lennie azokkal a buktatókkal, amelyekbe más keretrendszerek beleesnek: egy modulban meghatározott objektum állapotának megváltoztatása hatással lehet más egyidejű kérésekre is.

Egy másik hátrány az, hogy mivel a modellek és vezérlők nem osztályalapúak, a hatékony kód-újrafelhasználás nehezebbé válik, különösen mivel a szülővezérlőtől való öröklés képtelensége (pl. a Ruby on Rails alkalmazásvezérlője) azt jelenti, hogy a vezérlők közös funkcióira többször hivatkozni kell. az összes vezérlőfájlban.

Támogatott platformok

Operációs rendszerek, Python verziók, virtuális gépek, hardver

A web2py fut Windows , Windows CE telefonokon, Mac , Unix / Linux rendszeren , Google App Engine , Amazon EC2 , szinte minden Python 2.4 [18] /2.5/2.6/2.7 webtárhelyen.

A web2py kiadási verziói között megtalálható a Python 2.5, de a forrásverzió 2.4 és 2.7 között is futtatható.

A web2py, mivel a v1.64.0 változatlan formában fut Java -n a Jython 2.5-tel, minden ismert korlátozás nélkül. [19]

A web2py kód futhat az IronPython segítségével .NET -en . [20] Korlátozások:

  • nincs csv modul (tehát nincs adatbázis I/O);
  • nincsenek harmadik féltől származó adatbázis-illesztőprogramok (még az SQLite sem , tehát egyáltalán nincsenek adatbázisok);
  • nincs beépített webszerver (hacsak nem csorbítja meg a jelek eltávolításával és a naplózással ).

A web2py bináris fájl [21] USB-meghajtóról vagy hordozható merevlemezről fog futni függőségek nélkül, például a Portable Python Archived 2020. november 12-én a Wayback Machine -nél .

Webszerverek

A Web2py a beépített Rocket szerver [22] , valamint az Apache , [23] Lighttpd , [24] Cherokee , [25] Hiawatha , Nginx és jóformán bármely más webszerver segítségével válaszol a HTTP és HTTPS -en keresztül érkező kérésekre. támogatja a CGI , FastCGI , WSGI , mod proxy , [26] [27] [28] és/vagy mod python fájlokat .

IDE-k és hibakeresők

Míg számos web2py fejlesztő szövegszerkesztőket használ , mint például a Vim , az Emacs vagy a TextMate , a Web2py beépített webalapú IDE-vel is rendelkezik. Mások inkább a speciálisabb eszközöket részesítik előnyben, amelyek hibakeresést, újrafeldolgozást stb.

Munka adatbázisokkal

A web2py adatbázis-absztrakciós rétege ( DAL ) transzparensen és dinamikusan generál SQL-lekérdezéseket, és végrehajtja azokat számos kompatibilis DBMS-en anélkül, hogy adatbázis-specifikus SQL-parancsokra lenne szükség (ugyanakkor az SQL-parancsok közvetlenül is végrehajthatók).

Az SQLite a Python része, és az alapértelmezett web2py adatbázis. A kapcsolati karakterlánc módosítása lehetővé teszi a Firebird , az IBM DB2 , az Informix , az Ingres , a Microsoft SQL Server , a MySQL , az Oracle , a PostgreSQL és a Google App Engine (GAE) rendszerekhez való csatlakozást bizonyos kikötésekkel. Specialitások:

  • Több adatbázis kapcsolat.
  • Az automatikus táblázat létrehozása és módosítása.
  • automatikus tranzakciók .
  • Elosztott tranzakciók :
    • A web2py v1.17 óta a PostgreSQL v8.2 és újabb verziója óta [30] [31] , mert API-t biztosít a kétfázisú véglegesítéshez .
    • A web2py v1.70.1 óta Firebirddel és MySQL-lel (kísérleti).
  • A GAE nem relációs tároló, de a web2py emulál bizonyos műveleteket.

A DAL nagy sebességet ígér, legalábbis az SQLAlchemyhez és a Stormhoz képest . [32]

A Web2py DAL-t valósít meg, nem ORM -et . Az ORM az adatbázistáblákat osztályokká képezi, amelyek az adatbázisréteg logikai absztrakcióit képviselik (pl. egy User osztály vagy egy PurchaseOrder osztály), és a rekordokat ezen osztályok példányaira képezi le. A DAL ehelyett az adatbázistáblákat és rekordokat olyan osztályok példányaiba képezi le, amelyek magasabb szintű absztrakciók helyett halmazokat és rekordokat reprezentálnak. Nagyon hasonló a szintaxisa az ORM-hez, de gyorsabb, és szinte bármilyen SQL-kifejezést képes leképezni DAL-kifejezésekre. A DAL a web2py többi részétől függetlenül használható. [33]

Íme néhány példa a DAL szintaxisra:

db = DAL ( 'postgresql://user:pass@localhost/db' , pool_size = 10 ) db . define_table ( 'személy' , Mező ( 'név' ), Mező ( 'kép' , 'feltöltés' )) db . személy . insert ( name = 'Martin' , image = open ( 'filename.png' )) rows = db (( db . személy . név == 'Martin' ) | db . személy . név . tartalmazza ( 'T' )) . kiválasztás ( sorrend = db . személy . név . alacsonyabb ())

A DAL legújabb verziója támogatja a 2D GIS funkciókat Spatialite és PostGIS segítségével. A jelenlegi API-k kísérleti jellegűek a 3D API-kra való esetleges átállás miatt.

Automatizált adatbázis-migráció

A web2py támogatja az automatikus adatbázis-migrációkat is  – ha megváltoztatja egy tábla definícióját, a web2py ennek megfelelően MÓDOSÍTJA. Az áttelepítések automatikusak, de bármely táblánál letilthatók, és az áttelepítést általában akkor tiltják le, amikor egy alkalmazás készen áll az élő terjesztésre. Az áttelepítéseket és az áttelepítési kísérleteket a rendszer naplózza, dokumentálva a változásokat.

Korlátozások:

  • Az SQLite nem módosíthatja a táblát és nem módosíthatja az oszlop típusát, hanem egyszerűen tárolja az új értékeket az új típusnak megfelelően.
  • A GAE-nek nincs alter-table fogalma, így a migráció korlátozott.

Licenc

A Web2py kód a GNU Lesser General Public License (LGPL) 3. verziója alatt jelenik meg a web2py 1.91.1-es verziójától kezdődően. [34]

A Web2py kód az 1.91.1-es verzió előtt GNU GPL v2.0 alatt jelent meg , kereskedelmi kivétellel.

A web2py-vel terjesztett különféle harmadik féltől származó csomagok saját licencekkel rendelkeznek, általában nyilvános domain , MIT vagy BSD típusú licencekkel. A web2py-vel épített alkalmazásokra nem vonatkozik az LGPL licenc.

A Web2py szerzői joga Massimo DiPierro tulajdona. A "web2py framework" védjegy Massimo DiPierro tulajdona .

Díjak

2011-ben az InfoWorld a web2py-t a hat Python webes keretrendszer élére helyezte. Archiválva 2013. december 15-én a Wayback Machine -nél, a web2py-t a legjobb nyílt forráskódú alkalmazásfejlesztő szoftvernek járó 2011-es Bossie-díjjal jutalmazta . 2012-ben a web2py elnyerte az Év technológiája díjat. Archiválva 2014. április 18-án a Wayback Machine -nél, amiért a Web2py mindent tartalmaz, ami a webalkalmazások készítéséhez szükséges – még a Python interpreter is. Alkotójának küldetése, hogy egy könnyen használható keretrendszert építsen, az egészre kiterjed. A Web2py adatbázis-absztrakciós rétege lehetővé teszi számos adatbázis kezelését anélkül, hogy SQL-t kellene írnia. Miután meghatározta az adatbázistáblákat, a Web2py automatikusan létrehoz egy adminisztrációs felületet az alkalmazáshoz. Valójában a Web2py kombinált konzolja és irányítópultja az összes alkalmazásfejlesztési tevékenységnek a helye – még az alkalmazásfájlok szerkesztése is. Végül a Web2py lehetővé teszi, hogy Python-kódot ágyazzon be weboldala HTML-kódjába, így nem kell új sablonnyelvet tanulnia. Minden beépített támogatásával a Web2py olyan fájdalommentes, amennyire csak lehet .

Bibliográfia

web2py bemutató

A web2py dokumentációját a The Definitive Reference Guide archiválása 2018. június 12-én a Wayback Machine -nél tartalmazza , Massimo DiPierro . A kézikönyv nyomtatott vagy csak olvasható PDF formátumban is elérhető.

Online dokumentáció

A 2014. március 19-én, a Wayback Machine -nél archivált online dokumentáció a web2py kezdőlapjáról található, szakácskönyvvel , videókkal, interaktív példákkal, interaktív API-referenciával, epydoc -okkal (teljes könyvtári hivatkozás), GYIK -kal , csalólappal , online eszközökkel stb.

Videó

Nyomtatott anyagok

Általános információk

Támogatás

A közösségi támogatás a web2py tudásbázison, archiválva 2014. március 19-én a Wayback Machine -en , a web2py levelezőlistán , a Google Csoportok Wayback Machine-jén, valamint a # web2py csatornán keresztül érhető el a freenode -on . [35] 2009. 10. 2009-ig a kereskedelmi web2py-támogatást tizenöt vállalat biztosítja világszerte. [36]

Fejlesztők

A web2py vezető fejlesztője Massimo DiPierro professzor , a chicagói DePaul Egyetem számítástudományi docense . 2011-ben a web2py kezdőlapja több mint 70 fő közreműködőt tartalmaz. [37]

Forráskód

A web2py forráskód két tárhelyről érhető el:

A web2py-ben használt harmadik féltől származó összetevők

Előzmények és név

A web2py első nyilvános verziójának forráskódját a GNU GPL v2.0 licenc alatt 2007. szeptember 27-én adta ki Massimo DiPierro Enterprise Web Framework (EWF) néven . Egy elnevezési ütközés miatt a nevet kétszer is meg kellett változtatni: az EWF v1.7 helyett a Gluon v1.0, a Gluon v1.15-öt pedig a web2py v1.16 követte. A licenc LGPLv3-ra változott a web2py 1.91.1-es verziójának 2010. december 21-i kiadásával.

Web2py segítségével készített alkalmazások

  • Movuca CMS és közösségi hálózat motor.
  • Azonnali sajtóblog platform.
  • Ourway Social Network.
  • NoobMusic Portál a rockzenéről.
  • LinkFindr hálózati diagnosztikai eszköz.
  • StarMaker Karaoke zenei és közösségi alkalmazások létrehozása.

Egy hosszabb lista a képernyőképekkel itt található Archivált 2014. március 14-én a Wayback Machine -nél és itt Archivált 2014. március 19-én a Wayback Machine -nél . A bővítmények listája itt található

Jegyzetek

  1. Kiadás: 2.21.1 – 2020.
  2. Web2py Framework – 2020.
  3. Web2py (2013), Mi a web2py?, web2py.com, letöltve: 2013. október 11. < http://www.web2py.com/init/default/what Archiválva : 2020. január 17. a Wayback Machine -nél >
  4. A Web2py a v1.63 óta számos protokollt támogat . Letöltve: 2014. március 19. Az eredetiből archiválva : 2018. április 24..
  5. A SOAP használata a web2py-vel . Letöltve: 2014. március 19. Az eredetiből archiválva : 2018. április 24..
  6. Intelligens webalapú űrlapok írása (hivatkozás nem érhető el) . Letöltve: 2014. március 19. Az eredetiből archiválva : 2017. június 30. 
  7. Rocket Web Server . Letöltve: 2014. március 19. Az eredetiből archiválva : 2020. november 29.
  8. Web2py online IDE archiválva : 2012. szeptember 8., a Wayback Machine with It's All Text!  (hivatkozás nem érhető el) Firefox kiegészítő és Ulipad archiválva 2014. március 12-én a Wayback Machine -nél (nyílt forráskódú Python IDE)
  9. Hogyan lehet hibakeresni a Web2py alkalmazásokat? . Hozzáférés dátuma: 2014. március 19. Az eredetiből archiválva : 2014. március 19.
  10. A Wing IDE támogatja a web2py hibakeresését . Hozzáférés dátuma: 2014. március 19. Az eredetiből archiválva : 2014. február 12.
  11. Az Eclipse/PyDev támogatja a web2py hibakeresését . Letöltve: 2014. március 19. Az eredetiből archiválva : 2010. február 13.
  12. A web2py használata az Eclipse-en . Letöltve: 2014. március 19. Az eredetiből archiválva : 2010. december 19.
  13. A Winpdb segítségével távoli hibakeresést végezhet TCP/IP-n keresztül (lefelé irányuló kapcsolat) . Letöltve: 2014. március 19. Az eredetiből archiválva : 2015. november 9.. 
  14. Titkosított kommunikáció a Winpdb-ben (lefelé irányuló kapcsolat) . Letöltve: 2014. március 19. Az eredetiből archiválva : 2015. november 9.. 
  15. Legegyszerűbb weboldal web2py-vel: „Hello World” példa . Letöltve: 2014. március 19. Az eredetiből archiválva : 2019. május 29.
  16. A web2py sablonok használata web2py nélkül . Letöltve: 2014. március 19. Az eredetiből archiválva : 2012. február 14..
  17. Joomla sablonok használata web2py-vel . Letöltve: 2014. március 19. Az eredetiből archiválva : 2018. április 24..
  18. A web2py futtatása Python 2.4-el . Letöltve: 2014. március 19. Az eredetiből archiválva : 2013. október 31..
  19. A Web2py teljes mértékben fut Java és J2EE alatt a Jython használatával . Letöltve: 2014. március 19. Az eredetiből archiválva : 2012. november 9..
  20. A Web2py az IronPython segítségével fut .NET-en, korlátozásokkal . Letöltve: 2014. március 19. Az eredetiből archiválva : 2014. április 25..
  21. MySQL web2py Windows binárissal USB-meghajtón . Letöltve: 2014. március 19. Az eredetiből archiválva : 2012. május 26..
  22. A beépített SSL szerver futtatása . Letöltve: 2014. március 19. Az eredetiből archiválva : 2015. április 15.
  23. Web2py Apache és mod_ssl segítségével . Hozzáférés dátuma: 2014. március 19. Az eredetiből archiválva : 2012. június 7.
  24. Web2py Lighttpd-vel és FastCGI-vel . Letöltve: 2014. március 19. Az eredetiből archiválva : 2014. április 25..
  25. Web2py Cherokee-val . Letöltve: 2014. március 19. Az eredetiből archiválva : 2013. december 2..
  26. Apache modul mod_proxy . Letöltve: 2014. március 19. Az eredetiből archiválva : 2011. február 10.
  27. Web2py a mod_proxyval . Letöltve: 2014. március 19. Az eredetiből archiválva : 2013. október 31..
  28. Web2py mod_proxy és mod_proxy_html segítségével . Letöltve: 2014. március 19. Az eredetiből archiválva : 2014. március 18..
  29. A Wing IDE használata a web2py-vel . Hozzáférés dátuma: 2014. március 19. Az eredetiből archiválva : 2014. február 12.
  30. Elosztott tranzakciók PostgreSQL-lel Archiválva : 2009. április 14.
  31. Elosztott tranzakciók PostgreSQL-lel — további részletek
  32. ORM Benchmark . Letöltve: 2014. március 19. Az eredetiből archiválva : 2013. október 31..
  33. A web2py DAL használata web2py nélkül . Hozzáférés dátuma: 2014. március 19. Az eredetiből archiválva : 2013. november 1..
  34. web2py Licencszerződés . Letöltve: 2014. március 19. Az eredetiből archiválva : 2014. április 25..
  35. IRC #web2py csatorna archiválva : 2009. október 27.
  36. A web2py kereskedelmi támogatása . Hozzáférés dátuma: 2014. március 19. Az eredetiből archiválva : 2014. március 19.
  37. A web2py főbb közreműködőinek listája . Hozzáférés dátuma: 2014. március 19. Az eredetiből archiválva : 2014. március 19.

Linkek