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 |
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 .
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ó .
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 ))Minden web2py alkalmazáshoz hibakövető tartozik :
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:
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.
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.
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.
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:
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 .
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 .
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.
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:
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.
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:
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 .
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 .
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ő.
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.
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]
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]
A web2py forráskód két tárhelyről érhető el:
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.
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ó
Piton | |
---|---|
Közösség | |
Megvalósítások | |
Egyéb |
|