Web2py - Web2py
![]() logo web2py | |
Původní autoři | Massimo Di Pierro |
---|---|
První vydání | 27. září 2007 |
Stabilní uvolnění | 2.20.4 / 3. května 2020[1] |
Úložiště | Úložiště Web2py |
Napsáno | Krajta |
Plošina | Cross-platform |
Typ | Rámec webových aplikací |
Licence | GNU Lesser General Public License verze 3 (LGPLv3) |
webová stránka | www.web2py.com |
Web2py je open-source rámec webových aplikací napsáno v Krajta programovací jazyk. Web2py umožňuje webové vývojáře programovat dynamický webový obsah použitím Krajta. Web2py je navržen tak, aby pomáhal omezovat zdlouhavé úkoly při vývoji webu, jako je vývoj webové formuláře od nuly, i když webový vývojář může vytvořit formulář v případě potřeby od nuly.[2]
Web2py byl původně navržen jako učební nástroj s důrazem na snadné použití a rozvinutí. Proto nemá žádné konfigurační soubory na úrovni projektu. Design web2py byl inspirován Ruby on Rails a Django rámce. Stejně jako tyto rámce se web2py zaměřuje na rychlý vývoj upřednostňuje konvence nad konfigurací přístup a následuje a model – pohled – řadič (MVC) architektonický vzor.
Přehled
Web2py je full-stack framework v tom, že má integrované komponenty pro všechny hlavní funkce, včetně:
- HTTP požadavky, odpovědi HTTP, cookies, zasedání;
- více protokolů[3] HTML /XML, ZBYTEK, ATOM a RSS, RTF a CSV, JSON, JSON-RPC a XML-RPC, AMF-RPC (Blikat /Flex ), a MÝDLO;[4]
- CRUD API;
- násobek ověřování mechanismy a řízení přístupu na základě rolí;
- vrstva abstrakce databáze (DAL), který dynamicky generuje SQL a běží na více kompatibilních back-endech databáze;
- RAM, disk, a memcached -na základě ukládání do mezipaměti pro škálovatelnost;
- internacionalizace Podpěra, podpora;
- jQuery pro Ajax a UI účinky;
- automatické protokolování chyb s kontextem.
Web2py podporuje zvuk softwarové inženýrství praktiky jako
- the model – pohled – řadič (MVC) vzor;
- vlastní odevzdání[5] z webové formuláře;
- na straně serveru zasedání;
- bezpečné zacházení s nahranými soubory.
Web2py používá WSGI protokol, protokol orientovaný na Python pro sdělení mezi webový server a webové aplikace. Poskytuje také obslužné rutiny pro CGI a FastCGI protokoly a zahrnuje vícevláknové, SSL - povolená raketa[6] wsgiserver.
Charakteristické rysy
Webové integrované vývojové prostředí (IDE)
Všechno rozvoj, ladění, testování, údržba a vzdálenou správu databáze lze (volitelně) provádět bez nástrojů třetích stran, prostřednictvím webového rozhraní, samotné aplikace web2py. Internacionalizace (přidávání jazyků a psaní překladů) lze také provádět z tohoto IDE. Každá aplikace má automaticky generované rozhraní pro správu databáze, podobné jako Django. Web IDE zahrnuje také webové testování.
Aplikace lze také vytvářet z příkazový řádek nebo vyvinut s jinými IDE.[7] Další možnosti ladění:[8]
- IDE křídla umožňuje grafické ladění aplikací web2py[9] při interakci s webovým prohlížečem můžete kontrolovat a upravovat proměnné, volat funkce atd.
- Zatmění /PyDev - Eclipse s pluginem Aptana PyDev - podporuje také web2py.[10][11]
- Rozšiřitelný pdb debugger je modul standardní knihovny Pythonu.
- S platformově nezávislým open-source ladicím programem Winpdb lze provádět vzdálené ladění[12] přes TCP / IP prostřednictvím šifrovaného připojení.[13]
The Ahoj světe program s web2py v jeho nejjednodušší formě (jednoduchá webová stránka[14] bez šablony) vypadá takto:
def Ahoj(): vrátit se 'Ahoj světe'
Web2py obsahuje čistý Python jazyk šablony, s č odsazení požadavky a serverový objektový model dokumentu (DOM Systém šablon funguje bez web2py.[15] Joomla Šablony 1.x lze převést na rozložení web2py.[16]
Web2py také obsahuje dvě knihovny značek: filtr markdown2 text-to-HTML, který převádí Snížení označení do HTML za běhu; a markmin, který je inspirován markdownem, ale podporuje tabulky, video / audio html5 a protokol oembed.
A ovladač bez zobrazení automaticky používá obecný pohled, který vykresluje proměnné vrácené řadičem, což umožňuje vývoj obchodní logiky aplikace před zápisem HTML. Příklad „Hello World“ s použitím výchozí šablony:
def Ahoj(): vrátit se diktát(Pozdrav='Ahoj světe')
Výstup dict () akce se automaticky vykreslí v HTML, pokud je stránka požadována s příponou .html, v JSON, pokud je stránka požadována s příponou .json, v XML, pokud je požadována s .xml. Podporuje další protokoly včetně jsonp, rss, ics, google maps atd. A je rozšiřitelný.
Tady je složitější příklad kódu, který definuje tabulku a zpřístupňuje mřížku přihlášeným uživatelům:
db.tabulka_definice('věc',Pole('název',nenulový=Skutečný))@auth.vyžaduje_přihlášení()def Ahoj(): vrátit se diktát(mřížka = SQLFORM.mřížka(db.věc))
Jízdenkový systém
Každá aplikace web2py je dodávána s jízdenkový systém:
- Pokud dojde k chybě, je zaznamenána a uživateli je vydán lístek. To umožňuje sledování chyb.
- Chyby a zdrojový kód jsou přístupné pouze administrátorovi, který může vyhledávat a načítat chyby podle data nebo IP klienta. Žádná chyba nemůže mít za následek vystavení kódu uživatelům.
Přenosný cron
Cron je mechanismus pro vytváření a spouštění opakujících se úkolů na pozadí. Hledá konkrétní aplikaci crontab soubor, který je ve standardním formátu crontab. K dispozici jsou tři režimy provozu:
- Soft cron: cron rutiny jsou kontrolovány po doručení obsahu webové stránky, nezaručuje přesnost provedení. Pro neprivilegované instalace Apache CGI / WSGI.
- Tvrdý cron: cron vlákno začíná při spuštění web2py. Pro Windows a Rocket / samostatné instalace web2py.
- Systém cron: Funkce cron jsou vyvolány silou z příkazový řádek, obvykle ze systému crontab. Pro systémy Unix / Linux a místa, kde je třeba spustit spouštění cron, i když web2py momentálně neběží; také dobré pro instalace CGI / WSGI, pokud máte přístup k systému crontab.
Plánovač
Od verze 2.3 se použití cronu nedoporučuje, protože web2py přichází s plánovačem master / worker. Úlohy lze definovat v modelech a jsou naplánovány vytvořením záznamu v databázi. Uživatelé mohou spustit pracovní procesy, kteří vyzvedávají a provádějí úkoly na pozadí. Plán je lepší než cron, protože umožňuje specifikovat více parametrů (čas spuštění, čas zastavení, počet opakování, počet pokusů v případě chyby) a dělat lepší práci při běhu v rámci stálého využití zdrojů.
Distribuce bytecode
Web2py může kompilovat webové aplikace pro distribuci v bytecode kompilovaný formulář bez zdrojového kódu. Na rozdíl od frameworků, které pro svá zobrazení používají specializované jazyky šablon, může Web2py také zkompilovat kód zobrazení do bytecode, protože se jedná o čistý Pythonův kód.
Globální prostředí
![]() | tento článek potřebuje další citace pro ověření.listopad 2013) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
Web2py je ve světě webových rozhraní Pythonu jedinečný, protože modely a řadiče jsou spouštěny, neimportovány. Nejsou to moduly. Jsou prováděny v jediném globálním prostředí, které je inicializováno při každém požadavku HTTP. Toto konstrukční rozhodnutí má klady i zápory.
Hlavní výhodou je snadnost vývoje, zejména pro rychlé prototypování. Další výhodou je, že všechny objekty definované v tomto prostředí se při každém požadavku HTTP čistě resetují a nikdy se nesdílejí mezi požadavky. To znamená, že si vývojář nemusí dělat starosti se změnou stavu objektu (například čitelným atributem databázového pole) nebo se obávat změny prosakující do jiných souběžných požadavků nebo jiných aplikací. Třetí výhodou je, že web2py umožňuje koexistenci více aplikací ve stejné instanci bez konfliktů, i když používají různé verze stejných modulů nebo různé moduly se stejným názvem.
Hlavní nevýhodou globálního prostředí je, že soubory modelů a soubory řadičů nejsou moduly a záleží na pořadí provádění (i když je lze určit pomocí podmíněných modelů). Konflikt pojmenování je pravděpodobnější než v normálních modulech Pythonu. Některé standardní vývojové nástroje Pythonu nemusí rozumět objektům definovaným v modelech a řadičích. Vývojáři si navíc musí být vědomi toho, že kód v modelech se provádí při každém požadavku, což může způsobit výkonnostní trest. Nic ve Web2py nebrání vývojářům v používání a importu normálních modulů Pythonu (bezmodelní přístup) a pro tento účel poskytuje Web2py podprocesový lokální objekt (aktuální) pro usnadnění přístupu k objektům spojeným s aktuálním požadavkem. V tomto případě si však vývojář musí být vědom stejných úskalí, která vznikají jiným rámcům: změna stavu objektu definovaného v modulu může ovlivnit další souběžné požadavky.
Dalším důvodem je, že protože modely a řadiče nejsou založeny na třídách, efektivní opětovné použití kódu se stává obtížnějším, zejména proto, že neschopnost dědit z nadřazeného řadiče (např. ApplicationController v Ruby on Rails) znamená, že na běžnou funkčnost řadiče je třeba opakovaně odkazovat napříč všemi soubory řadiče.
Podporovaná prostředí
Operační systémy, verze a implementace Pythonu, virtuální stroje, hardware
web2py běží dál Okna, Windows CE telefony, Mac, Unix /Linux, Google App Engine, Amazon EC2 a téměř jakýkoli webhosting přes Python 2.7 / 3.5 / 3.6 / pypy.[17]
Aktuální binární verze web2py (pro Windows nebo Mac) obsahuje Python 2.7, ale zdrojovou verzi lze spustit na 2.7 a 3.5+. Podpora pro Python 2.6 byla v roce 2017 zrušena.
web2py, protože v1.64.0 běží beze změny na Jáva s Jython 2.5, bez jakéhokoli známého omezení.[18]
Web2py kód může běžet s IronPython na .SÍŤ.[19] Omezení:
- Ne CSV modul (takže žádný vstup / výstup databáze);
- žádné ovladače databáze třetích stran (ani ne SQLite, takže vůbec žádné databáze);
- žádný vestavěný webový server (pokud jej neochromíte odstraněním signály a protokolování).
Web2py binární bude[20] utéct z a USB disk nebo přenosný pevný disk bez závislostí, například Portable Python.
Webové servery
Web2py může obsluhovat požadavky prostřednictvím HTTP a HTTPS s integrovaným serverem Rocket,[21] s Apache,[22] Lighttpd,[23] Čerokee,[24] Hiawatha, Nginx a téměř jakýkoli jiný webový server prostřednictvím CGI, FastCGI, WSGI, mod_proxy,[25][26][27] a / nebo mod_python.
IDE a debuggery
Zatímco řada vývojářů web2py používá textové editory jako Vim, Emacs nebo TextMate Web2py má také integrované webové IDE. Jiní dávají přednost specializovanějším nástrojům poskytujícím ladění, refaktoring atd.
- Studio Aptana s integrovaným PyDev
- Zatmění s PyDev
- Eric s integrovaným debuggerem.[28]
- IDE křídla[29]
- Microsoft Visual Studio s Pythonové nástroje pro Visual Studio
- Pycharm 3 má podporu rámce Web2py
Zpracování databáze
Vrstva abstrakce databáze (DAL ) web2py dynamicky a transparentně generuje dotazy SQL a běží na více kompatibilních databázových backendech bez nutnosti příkazů SQL specifických pro databázi (i když příkazy SQL lze vydávat explicitně).
SQLite je součástí Pythonu a je výchozí databází web2py. Změna připojovacího řetězce umožňuje připojení k Fénix, IBM DB2, Informix, Ingres, Microsoft SQL Server, MySQL, Věštec, PostgreSQL, a Google App Engine (GAE) s několika výhradami. Speciality:
- Více databázových připojení.
- Automatické vytváření a úpravy tabulek.
- Automatický transakce.
- Distribuované transakce:
- Od verze web2py v1.17 s PostgreSQL v8.2 a novějšími[30][31] protože poskytuje API pro dvoufázové závazky.
- Vzhledem k tomu, web2py v1.70.1 s Firebird a MySQL (experimentální).
- GAE není relační úložiště, ale web2py emuluje určité operace.
DAL je rychlý, přinejmenším srovnatelný s SQLAlchemy a Bouřka.[32]
Web2py implementuje DAL, nikoli ORM. ORM mapy databázové tabulky do třídy představující logické abstrakce z databázové vrstvy (např. třída User nebo třída PurchaseOrder) a mapuje záznamy do instance těchto tříd. DAL místo toho mapuje databázové tabulky a záznamy do instancí tříd představujících sady a záznamy namísto abstrakcí vyšší úrovně. Má to velmi podobné syntax na ORM, ale je rychlejší a může mapovat téměř všechny výrazy SQL do výrazů DAL. DAL lze použít nezávisle na zbytku web2py.[33]
Zde je několik příkladů syntaxe DAL:
db = DAL('postgresql: // user: pass @ localhost / db', pool_size=10)db.tabulka_definice('osoba',Pole('název'),Pole('obraz','nahrát'))db.osoba.vložit(název='Martin', obraz=otevřeno('filename.png'))řádky = db((db.osoba.název=='Martin')|db.osoba.název.obsahuje('T')).vybrat(seřadit podle=db.osoba.název.dolní())
Nejnovější verze DAL podporuje funkce 2D GIS se Spatialite a PostGIS. Aktuální API jsou experimentální z důvodu možného přechodu na 3D API.
Automatická migrace databáze
web2py podporuje databázi migrace —Změňte definici tabulky a web2py odpovídajícím způsobem alteruje tabulku. Migrace jsou automatické, ale lze je zakázat pro libovolnou tabulku a migrace je obvykle zakázána, když je aplikace připravena k živé distribuci. Migrace a pokusy o migraci jsou protokolovány a dokumentují změny.
Omezení:
- SQLite nemůže změnit tabulku a změnit typ sloupce, ale jednoduše jednoduše uloží nové hodnoty podle nového typu.
- GAE nemá žádnou koncepci alter-table, takže migrace jsou omezené.
Licence
Kód Web2py je vydán pod GNU Lesser General Public License (LGPL) verze 3 od verze web2py 1.91.1.[34]
Kód Web2py před vydáním verze 1.91.1 pod GNU GPL v2.0 s komerční výjimkou.
Různé balíčky třetích stran distribuované s web2py mají obvykle své vlastní licence veřejná doména, MIT nebo BSD -typ licence. Licence vytvořené pomocí web2py nejsou pokryty licencí LGPL.
Autorská práva Web2py jsou chráněna autorskými právy Massimo DiPierro. Ochrannou známku web2py vlastní Massimo DiPierro.
Ocenění
V roce 2011 InfoWorld umístila web2py na nejvyšší místo mezi šesti nejlepšími webovými rámci Pythonu a získala web2py cenu Bossie Award 2011 za nejlepší software pro vývoj aplikací s otevřeným zdrojovým kódem. V roce 2012 web2py vyhrál InfoWorld Ocenění Technologie roku.[35][36]
Publikace
web2py Book
Základní dokumentací web2py je The Official web2py Book, autor Massimo DiPierro. Tato příručka je úplná aplikace web2py a je volně dostupná online,[37] ve formátu PDF nebo v tištěné podobě.
- 1. vydání: z tisku. Wiley; 16. září 2008; 256 stránek; ISBN 978-0-470-43232-7.
- 2. vydání: web2py Manual. Wiley; 26. srpna 2009; 341 stránek; ISBN 978-0-470-59235-9.
- 3. vydání: Lulu; 25. září 2010 357 stran.
- 4. vydání: Lulu; 9. prosince 2011 583 stran.
- 5. vydání: PDF Copy; 3. března 2013 614 stran; ISBN 978-0-578-12021-8.
- nejnovější online zdroje: na GitHubu[38]
Online dokumentace
Online dokumentace je propojena z domovské stránky web2py s kuchařka, videa, interaktivní příklady, interaktivní reference API, epydoc s (kompletní reference do knihovny), FAQ, tahák, online nástroje atd.
- Cheat sheet pro web2py.
- web2pyslices, recepty zveřejněné pomocí sociální sítě movuca ve web2py.
- Crash Course v Web2py (pětidílná série).
- Prezentace Web2py (staré).
Videa
- Výukový program pro web2py Enterprise Web Framework.
- Výukový program web2py "Přestřelka".
- web2py v aplikaci Google.
- web2py: Vytvářejte, upravujte a nasazujte základní webovou aplikaci.
Vytištěno
- „kuchařka pro vývoj aplikací web2py“, Packt, 2012
- Webové programování s web2py; Časopis Python; Marco Tabini & Associates, Inc .; Červen 2008
Pozadí
Podpěra, podpora
Podpora komunity je k dispozici prostřednictvím znalostní báze web2py, e-mailového seznamu web2py ve Skupinách Google a webu # web2py kanál zapnutý freenode.[39] Od 10. 10. 2009 poskytuje komerční podporu web2py patnáct společností po celém světě.[40]
Vývojáři
Vedoucím vývojáře web2py je Massimo DiPierro, docent společnosti Počítačová věda na Univerzita DePaul v Chicago. Od roku 2011 uvádí domovská stránka web2py přes 70 „hlavních přispěvatelů“.[41]
Vývojový zdrojový kód
Zdrojový kód vývoje web2py je k dispozici v hlavním úložišti:
Software třetích stran zahrnutý do web2py
- Na základě Pythonu komponenty:
- Raketa, rychlý, HTTP / 1.1 -v souladu, vícevláknové, SSL - povoleno a streamování -schopný WSGI server;
- fcgi.py: a FastCGI /WSGI brána;
- Přihlašovací rozhraní API pro Janrain, Dropbox, Google, LDAP, PAM, X509, CAS, OpenID, OAuth 1 a 2, Loginza
- simplejson: jednoduchý, rychlý, úplný, správný a rozšiřitelný JSON kodér a dekodér;
- markdown2: a Snížení procesor;
- fpdf knihovna pro generování PDF;
- PyRTF: an RTF generátor dokumentů;
- A zvýrazňovač syntaxe;
- pysimplesoap pro služby SOAP;
- PyRSS2Gen: an RSS generátor;
- feedparser: k analýze RSS a Atom krmení.
- JavaScript komponenty na bázi:
- jQuery: lehký Knihovna JavaScript;
- CodeMirror: bezplatný editor zdrojového kódu;
- C komponenty na bázi:
- SQLite: a relační databáze;
- memcached: univerzální systém ukládání do mezipaměti distribuované paměti.
- Platební API pro Authorize.Net, Peněženku Google, Stripe.com
Historie a pojmenování
Zdrojový kód pro první veřejnou verzi web2py byl vydán pod GNU GPL v2.0 27. září 2007 Massimo DiPierro jako Enterprise Web Framework (EWF). Název byl kvůli konfliktům názvů dvakrát změněn: EWF v1.7 následoval Gluon v1.0 a Gluon v1.15 následoval web2py v1.16. Licence byla změněna na LGPLv3 od verze web2py 1.91.1 dne 21.12.2010.
Aplikace postavené na Web2py
- Movuca CMS a modul sociální sítě.
- Okamžitý tisk Blog plošina.
- Naše cesta Stránka sociální sítě.
- NoobMusic Web rockové hudby.
- LinkFindr Síťový diagnostický nástroj.
- StarMaker Vyvíjí aplikace sociální hudby ve stylu karaoke.
Poznámky
- ^ „Historie pro VERSION“.
- ^ Web2py (2013), Co je to web2py ?, web2py.com, vyvoláno 11. října 2013, <http://www.web2py.com/init/default/co >
- ^ Web2py mluví více protokolů od verze 1.63
- ^ Používání SOAP s web2py
- ^ Psaní inteligentních webových formulářů
- ^ Rocket Web Server
- ^ Web2py online IDE s Je to celý text! Doplněk pro Firefox a Ulipad (open source Python IDE)
- ^ Jak ladit aplikace Web2py?
- ^ Wing IDE podporuje ladění pro web2py
- ^ Eclipse / PyDev podporuje ladění pro web2py
- ^ Používání web2py na Eclipse
- ^ S Winpdb lze provádět vzdálené ladění přes TCP / IP
- ^ Šifrovaná komunikace ve Winpdb
- ^ Nejjednodušší webová stránka s web2py: Příklad „Hello World“
- ^ Jak používat šablony Web2py bez Web2py
- ^ Používání šablon Joomla s web2py
- ^ http://web2py.com/init/default/co
- ^ Web2py běží plně na Javě a J2EE pomocí Jythonu
- ^ Web2py běží s IronPythonem na .NET, s omezeními
- ^ MySQL s binárním souborem Windows Web2py na USB disku
- ^ Jak spustit integrovaný server SSL
- ^ Web2py s Apache a mod_ssl
- ^ Web2py s Lighttpd a FastCGI
- ^ Web2py s Cherokee
- ^ Modul Apache mod_proxy
- ^ Web2py s mod_proxy
- ^ Web2py s mod_proxy a mod_proxy_html
- ^ Eric IDE projekt
- ^ Používání Wing IDE s web2py
- ^ Distribuované transakce s PostgreSQL
- ^ Distribuované transakce s PostgreSQL - další podrobnosti
- ^ Benchmark ORM
- ^ Jak používat web2py DAL bez web2py
- ^ Licenční smlouva s web2py
- ^ Grehan, Ricku. „Pillars of Python: Six Python Web frameworks compared“. InfoWorld. Citováno 2017-11-30.
- ^ zaměstnanci, InfoWorld Recenze. „Vítězové ceny InfoWorld za technologii roku 2012“. InfoWorld. Citováno 2017-11-30.
- ^ „web2py - oficiální příručka online“. web2py.com. Citováno 2018-11-14.
- ^ „web2py / web2py-book“. GitHub. Citováno 2018-11-14.
- ^ Kanál IRC # web2py
- ^ Komerční podpora pro web2py
- ^ Seznam hlavních přispěvatelů do web2py