web2py | |
---|---|
Tyyppi | puitteet verkkosovellusten kehittämiseen |
Tekijä | Massimo di Pierro |
Kehittäjä | web2py-kehittäjät |
Sisään kirjoitettu | Python |
Ensimmäinen painos | 27. syyskuuta 2007 |
Laitteistoalusta | cross-platform |
uusin versio |
|
Osavaltio | Aktiivinen |
Lisenssi | GNU Lesser General Public License versio 3 (LGPLv3) |
Verkkosivusto |
web2py.com- postituslista |
web2py on avoimen lähdekoodin verkkosovelluskehityskehys, joka on kirjoitettu Python - ohjelmointikielellä . Web2py antaa verkkokehittäjille mahdollisuuden luoda dynaamisia verkkosivustoja Pythonilla. Web2py pyrkii vähentämään web-kehitystöitä, kuten verkkolomakkeiden kirjoittamista tyhjästä, vaikka kehittäjä voi tarvittaessa suunnitella lomakkeen alusta alkaen. [3]
Web2py suunniteltiin alun perin oppimistyökaluksi, jossa keskityttiin käytettävyyteen ja helppokäyttöisyyteen, koska siitä puuttuu projektin määritystiedostoja. Web2py-arkkitehtuuriin vaikuttivat Ruby on Rails (RoR) ja Django-kehykset . Näiden kehysten tavoin web2py on suunnattu nopeaan kehitykseen , noudattaa käytäntöjä määrityksiä vastaan ja noudattaa Model-View-Controller (MVC) -suunnittelumallia .
Web2py on monipuolinen kehys, ja siinä on sisäänrakennetut komponentit kaikille tärkeimmille ominaisuuksille, mukaan lukien:
Web2py kannustaa parhaisiin ohjelmistosuunnittelun käytäntöihin, nimittäin:
Web2py käyttää WSGI :tä , Python-pohjaista protokollaa verkkopalvelimen ja verkkosovellusten väliseen viestintään . CGI- ja FastCGI -protokollien käsittelijät ovat myös saatavilla, ja mukana on monisäikeinen , SSL -yhteensopiva WSGI- palvelin, Rocket [7] .
Koko etätietokannan kehitys- , virheenkorjaus- , testaus- , tuki- ja hallintaprosessi voidaan suorittaa (haluttaessa) ilman kolmannen osapuolen työkaluja verkkokäyttöliittymän kautta, joka puolestaan on web2py-sovellus. Kansainvälistäminen (kielten lisääminen ja kääntäminen) voidaan myös tehdä tästä IDE :stä . Jokaisessa sovelluksessa on automaattisesti luotu tietokannan hallintaliittymä, joka muistuttaa Djangoa . Web-IDE sisältää myös testityökalut ja verkkokonsolin .
Sovelluksia voidaan luoda sekä komentoriviltä että kirjoittaa kolmannen osapuolen IDE:illä. [8] Saatavilla muita virheenkorjausvaihtoehtoja: [9]
Klassinen Hello World web2py -ohjelma yksinkertaisimmassa muodossaan (näytetään paljas web-sivu [15] ilman mallia) näyttää tältä:
def hello (): palauta "Hello World"Web2py sisältää puhtaan Python-pohjaisen mallipohjakielen , joka ei vaadi sisennyksen käyttöä ja palvelinpuolen asiakirjaobjektimallia ( DOM ).
Mallimoottoria voidaan käyttää myös erikseen web2py:stä. [16] Joomla 1.x -mallit voidaan muuntaa web2py-malleiksi. [17]
Web2py toimittaa myös kaksi merkintäkirjastoa: markdown2- suodatin Arkistoitu 19. maaliskuuta 2014 Wayback Machinessa tekstistä HTML:ksi, joka muuntaa Markdown -merkinnät HTML :ksi lennossa ; ja markmin Arkistoitu 19. maaliskuuta 2014 Wayback Machinessa , samanlainen kuin edellinen, mutta tukee molempia taulukoita, html5 video/audio ja oembed-protokollaa.
Vastaavan näkymän puuttuessa ohjain käyttää automaattisesti yleisnäkymää, joka näyttää ohjaimen palauttamat muuttujat, mikä mahdollistaa sovelluksen liiketoimintalogiikan kehittämisen ennen HTML-asettelun kirjoittamista. Esimerkki "Hello World" -sovelluksesta oletusmallilla:
def hello (): return dict ( tervehdys = 'Hei maailma' )Toiminnon (funktion) palauttama dict()-arvo tulostetaan automaattisesti HTML-muodossa, jos sivua pyydetään .html-laajennuksella, JSON-muodossa, jos sivua pyydetään .json-laajennuksella, XML-muodossa, jos sivua pyydetään . .xml laajennus. Muut protokollat, kuten jsonp, rss, ics, google maps jne. ovat tuettuja ja niitä voidaan laajentaa.
Alla on monimutkaisempi esimerkki koodista, joka määrittää taulukon ja antaa rekisteröityneille käyttäjille mahdollisuuden muokata sen kenttiä:
db . define_table ( 'asia' , Kenttä ( 'nimi' , notnull = tosi )) @auth . edellyttää kirjautumista () def hello (): return dict ( grid = SQLFORM . grid ( db . thing ))Jokaisessa web2py-sovelluksessa on virheseuranta :
Cron on mekanismi toistuvien tehtävien luomiseen ja suorittamiseen taustalla. Se etsii sovelluksen crontab -tiedostoa tavallisessa crontab-muodossa. Käytettävissä on kolme toimintatilaa:
Versiosta 2.3 alkaen cronin käyttö on poistettu käytöstä, koska web2py:n mukana tulee ajoitus. Tehtävät voidaan määritellä malleissa ja ajoittaa luomalla merkintä tietokantaan. Käyttäjät voivat käynnistää prosesseja, jotka suorittavat tehtäviä taustalla. Ajastin on parempi kuin cron, koska sen avulla voit asettaa enemmän parametreja (alkamisaika, lopetusaika, toistojen määrä, virheyritysten määrä) ja toimii paremmin jatkuvalla resurssien käytössä.
Web2py voi kääntää verkkosovelluksia jaettavaksi tavukoodina ilman lähdekoodia. Toisin kuin kehyksiä, jotka käyttävät erikoistuneita mallikieliä, Web2py voi myös kääntää koodia tavukoodiksi, koska se on puhdasta Python-koodia.
Web2py on ainutlaatuinen Python-verkkokehysten maailmassa, koska mallit ja ohjaimet suoritetaan, ei tuoda. Ne eivät ole moduuleja. Ne suoritetaan yhdessä globaalissa ympäristössä, joka alustetaan jokaisessa http-pyynnössä. Tällä suunnittelupäätöksellä on hyvät ja huonot puolensa.
Suurin etu on kehittämisen helppous, erityisesti nopeaa prototyyppiä varten. Toinen etu on, että kaikki tässä ympäristössä määritellyt objektit nollataan puhtaasti jokaisessa http-pyynnössä, eikä niitä koskaan jaeta pyyntöjen kesken. Tämä tarkoittaa, että kehittäjän ei tarvitse huolehtia objektin tilan (esimerkiksi tietokantakentän luettavissa olevan attribuutin) muuttamisesta tai muutoksesta, joka vuotaa muihin samanaikaisiin pyyntöihin tai muihin sovelluksiin. Kolmas etu on, että web2py mahdollistaa useiden sovellusten rinnakkaiselon samassa ilmentymässä ilman ristiriitoja, vaikka ne käyttävät eri versioita samoista moduuleista tai eri moduuleista samalla nimellä.
Globaalin ympäristön suurin haittapuoli on, että mallitiedostot ja ohjaintiedostot eivät ole moduuleja ja suoritusjärjestyksellä on väliä (vaikka se voidaan määrittää ehdollisilla malleilla). Nimeämisristiriita esiintyy todennäköisemmin kuin tavallisissa Python-moduuleissa. Jotkut Pythonin vakiokehitystyökalut eivät ehkä ymmärrä malleissa ja ohjaimissa määritettyjä objekteja. Lisäksi kehittäjien on oltava tietoisia siitä, että mallien koodi suoritetaan joka pyynnöstä ja tämä voi aiheuttaa suoritusrangaistuksen. Mikään web2py:ssä ei estä kehittäjiä käyttämästä ja tuomasta tavallisia Python-moduuleja (malliton lähestymistapa), ja tätä tarkoitusta varten web2py tarjoaa säikeen paikallisen objektin (nykyinen), joka helpottaa pääsyä nykyiseen pyyntöön liittyviin objekteihin. Tässä tapauksessa kehittäjän on kuitenkin oltava tietoinen samoista ansoista, joihin muut kehykset joutuvat: moduulissa määritellyn objektin tilan muuttaminen voi vaikuttaa muihin samanaikaisiin pyyntöihin.
Toinen haittapuoli on, että koska mallit ja ohjaimet eivät ole luokkapohjaisia, tehokkaasta koodin uudelleenkäytöstä tulee vaikeampaa, varsinkin kun kyvyttömyys periä pääohjaimelta (esim. ApplicationController Ruby on Railsissa) tarkoittaa, että yleisiin ohjaintoimintoihin on viitattava toistuvasti. kaikissa ohjaintiedostoissa.
web2py toimii Windowsissa , Windows CE -puhelimissa, Macissa , Unixissa / Linuxissa , Google App Enginessä , Amazon EC2 :ssa ja lähes kaikissa Python 2.4:n [18] /2.5/2.6/2.7 verkkoisännöissä.
Web2pyn julkaisuversiot sisältävät Python 2.5:n, mutta lähdeversiota voidaan käyttää versioissa 2.4–2.7.
web2py, koska v1.64.0 toimii muokkaamattomana Javassa Jython 2.5: n kanssa ilman tunnettuja rajoituksia. [19]
web2py-koodi voi toimia IronPythonin kanssa .NET :ssä . [20] Rajoitukset:
Web2py-binaari [21] toimii USB-asemalta tai kannettavalta kiintolevyltä ilman riippuvuuksia, kuten Portable Python Archived 12.11.2020 Wayback Machinessa .
Web2py vastaa HTTP :n ja HTTPS :n kautta tehtyihin pyyntöihin käyttämällä sisäänrakennettua Rocket-palvelinta [22] sekä Apachea , [23] Lighttpd , [24] Cherokee , [25] Hiawatha , Nginx ja melkein mitä tahansa muuta verkkopalvelinta, joka tukee CGI , FastCGI , WSGI , mod proxy , [26] [27] [28] ja/tai mod python .
Vaikka monet web2py-kehittäjät käyttävät tekstieditoreja , kuten Vim , Emacs tai TextMate , Web2pyssä on myös sisäänrakennettu verkkopohjainen IDE. Toiset pitävät parempana erikoistuneempia työkaluja, jotka tarjoavat virheenkorjauksen, uudelleenkäsittelyn jne.
Web2py :n tietokannan abstraktiokerros ( DAL ) luo läpinäkyvästi ja dynaamisesti SQL-kyselyitä ja suorittaa ne useissa yhteensopivissa DBMS-järjestelmissä ilman tietokantakohtaisia SQL-komentoja (samaan aikaan SQL-komennot voidaan suorittaa myös suoraan).
SQLite sisältyy Pythoniin ja on oletusarvoinen web2py-tietokanta. Yhteysmerkkijonon muutos mahdollistaa yhteyden Firebirdiin , IBM DB2 :een , Informixiin , Ingresiin , Microsoft SQL Serveriin , MySQL :ään , Oracleen , PostgreSQL :ään ja Google App Engineen (GAE) tietyin varoin. Erikoisalat:
DAL lupaa suurta nopeutta, ainakin verrattuna SQLAlchemyyn ja Stormiin . [32]
Web2py toteuttaa DAL:n, ei ORM :n . ORM kartoittaa tietokantataulukot luokkiin , jotka edustavat tietokantakerroksen loogisia abstraktioita (esim. User-luokka tai PurchaseOrder-luokka), ja kartoittaa tietueet näiden luokkien esiintymiin . DAL sen sijaan kartoittaa tietokantataulukot ja tietueet luokkaesiintymiin, jotka edustavat joukkoja ja tietueita korkeamman tason abstraktioiden sijaan. Sillä on hyvin samanlainen syntaksi kuin ORM:lla, mutta se on nopeampi ja voi kartoittaa melkein kaikki SQL-lausekkeet DAL-lausekkeiksi. DAL:ta voidaan käyttää muusta web2py:stä riippumatta. [33]
Seuraavassa on joitain esimerkkejä DAL-syntaksista:
db = DAL ( 'postgresql://user:pass@localhost/db' , poolin_koko = 10 ) db . define_table ( 'henkilö' , Kenttä ( 'nimi' ), Kenttä ( 'kuva' , 'lataa' )) db . henkilö . insert ( nimi = 'Martin' , kuva = avoin ( 'tiedostonimi.png' )) rivit = db (( db . henkilö . nimi == 'Martin' ) | db . henkilö . nimi . sisältää ( 'T' )) . valitse ( järjestys = db . henkilö . nimi . alempi ())DAL:n uusin versio tukee 2D GIS -toimintoja Spatialiten ja PostGIS:n kanssa. Nykyiset sovellusliittymät ovat kokeellisia, koska ne voivat siirtyä 3D-sovellusliittymiin.
web2py tukee myös automaattisia tietokantojen siirtoja - jos muutat taulukon määritelmää, web2py MUUTTAA sitä vastaavasti. Siirrot ovat automaattisia, mutta ne voidaan poistaa käytöstä missä tahansa taulukossa, ja siirto on yleensä poistettu käytöstä, kun sovellus on valmis suoraa jakelua varten. Siirrot ja siirtoyritykset kirjataan lokiin ja dokumentoidaan muutokset.
Rajoitukset:
Web2py-koodi on julkaistu GNU Lesser General Public License (LGPL) -lisenssin versiolla 3 web2py-versiosta 1.91.1 alkaen. [34]
Web2py-koodi ennen versiota 1.91.1 julkaistiin GNU GPL v2.0 :lla kaupallisin poikkeuksin.
Useilla web2pyn avulla jaetuilla kolmansien osapuolien paketeilla on omat lisenssinsä, yleensä Public-domain- , MIT- tai BSD - tyyppiset lisenssit. LGPL-lisenssi ei kata web2pyllä rakennettuja sovelluksia.
Web2pyn tekijänoikeudet omistaa Massimo DiPierro. "Web2py framework" -tavaramerkin omistaa Massimo DiPierro .
Vuonna 2011 InfoWorld sijoitti web2pyn kuuden Python-verkkokehyksen kärkeen. Arkistoitu 15. joulukuuta 2013 Wayback Machinessa , ja se myönsi web2pylle vuoden 2011 Bossie-palkinnon parhaasta avoimen lähdekoodin sovelluskehitysohjelmistosta . Web2py voitti Vuoden teknologia -palkinnon vuonna 2012. Arkistoitu 18. huhtikuuta 2014 Wayback Machinessa , koska Web2py sisältää kaiken mitä tarvitset verkkosovellusten rakentamiseen - jopa Python-tulkin. Sen luojan tehtävänä on rakentaa helppokäyttöinen kehys ulottuu kaikkialle. Web2pyn tietokannan abstraktiokerroksen avulla voit käsitellä erilaisia tietokantoja ilman, että sinun tarvitsee kirjoittaa SQL:ää. Kun olet määrittänyt tietokantataulukot, Web2py rakentaa automaattisesti hallintaliittymän sovelluksellesi. Itse asiassa Web2pyn yhdistelmäkonsoli ja kojelauta ovat siellä, missä kaikki sovelluskehitystoiminnot tapahtuvat – jopa sovellustiedostojen muokkaaminen. Lopuksi Web2py antaa sinun upottaa Python-koodin Web-sivusi HTML-koodiin, joten sinun ei tarvitse opetella uutta mallikieltä. Kaikella sisäänrakennetulla apuvälineellä Web2py on niin kivuton kuin vain voi .
Web2pyn dokumentaatio on kerätty Massimo DiPierron The Definitive Reference Guide -oppaaseen , joka on arkistoitu 12. kesäkuuta 2018 Wayback Machinessa . Käsikirja on saatavana myös painetussa muodossa tai vain luku - PDF-tiedostona.
Online - dokumentaatio , arkistoitu 19. maaliskuuta 2014 Wayback Machinessa , on linkitetty web2py-kotisivulta, jossa on keittokirja , videoita, interaktiivisia esimerkkejä, interaktiivinen API-viittaus, epydoc s (täydellinen kirjastoviite), UKK , huijauslehti , online-työkalut jne.
Yhteisön tuki on saatavilla web2py-tietokannan kautta. Arkistoitu 19. maaliskuuta 2014 Wayback Machinessa , web2py-postituslista Arkistoitu 25. kesäkuuta 2012 Google-ryhmien Wayback Machine -palveluun ja #web2py- kanava freenodessa . [35] 2009-10-2009 kaupallista web2py-tukea tarjoaa viisitoista yritystä ympäri maailmaa. [36]
Web2py:n johtava kehittäjä on professori Massimo DiPierro , tietojenkäsittelytieteen apulaisprofessori DePaul- yliopistosta Chicagossa . Vuodesta 2011 lähtien web2py-kotisivulla on yli 70 "pääavustajaa". [37]
Web2py-lähdekoodi on saatavilla kahdesta arkistosta:
Massimo DiPierro julkaisi web2pyn ensimmäisen julkisen version lähdekoodin GNU GPL v2.0 -lisenssillä 27. syyskuuta 2007 nimellä Enterprise Web Framework (EWF). Nimeämisristiriidan vuoksi nimi jouduttiin muuttamaan kahdesti: EWF v1.7 korvattiin Gluon v1.0:lla ja Gluon v1.15:n jälkeen web2py v1.16. Lisenssi muutettiin LGPLv3:ksi, kun web2py-versio 1.91.1 julkaistiin 21.12.2010.
Pidempi luettelo kuvakaappauksineen löytyy täältä . Arkistoitu 14. maaliskuuta 2014 Wayback Machinessa ja täältä Arkistoitu 19. maaliskuuta 2014 Wayback Machinessa . Lista liitännäisistä löytyy täältä
Python | |
---|---|
Yhteisö | |
Toteutukset | |
Muut |
|