Web2py

web2py
Typ framework pro vývoj webových aplikací
Autor Massimo di Pierre
Vývojář vývojáři web2py
Zapsáno v Krajta
První vydání 27. září 2007 ( 27.09.2007 )
Hardwarová platforma multiplatformní
Nejnovější verze
Stát Aktivní
Licence GNU Lesser General Public License verze 3 (LGPLv3)
webová stránka mailing list web2py.com

web2py  je open source framework pro vývoj webových aplikací napsaný v programovacím jazyce Python . Web2py umožňuje webovým vývojářům vytvářet dynamické webové stránky pomocí Pythonu. Web2py si klade za cíl omezit domácí vývojářské práce, jako je psaní webových formulářů od nuly, ačkoli vývojář může v případě potřeby navrhnout formulář od začátku. [3]

Web2py byl původně navržen jako výukový nástroj se zaměřením na použitelnost a snadnou implementaci, protože postrádá konfigurační soubory projektu. Architektura web2py byla ovlivněna frameworky Ruby on Rails (RoR) a Django . Stejně jako tyto rámce je web2py zaměřen na rychlý vývoj , prosazuje konvence nad konfigurací a řídí se návrhovým vzorem Model-View-Controller (MVC) .

Přehled

Web2py je plnohodnotný framework a přichází s vestavěnými komponentami pro všechny hlavní funkce, včetně:

Web2py podporuje nejlepší postupy softwarového inženýrství , konkrétně:

Web2py používá WSGI , protokol založený na Pythonu pro komunikaci mezi webovým serverem a webovými aplikacemi. K dispozici jsou také obslužné programy pro protokoly CGI a FastCGI a součástí je i vícevláknový server WSGI s podporou SSL , Rocket [7] .

Charakteristické rysy

Webové integrované vývojové prostředí (IDE)

Celý proces vývoje , ladění , testování , podpory a správy vzdálené databáze lze (v případě potřeby) provádět bez jakýchkoli nástrojů třetích stran prostřednictvím webového rozhraní, kterým je zase aplikace web2py. Z tohoto IDE lze také provést internacionalizaci (přidávání jazyků a překládání) . Každá aplikace je dodávána s automaticky generovaným rozhraním pro správu databází, podobně jako Django . Webové IDE také obsahuje testovací nástroje a webovou konzoli .

Aplikace lze vytvářet jak z příkazového řádku, tak psát pomocí IDE třetích stran. [8] K dispozici jsou další možnosti ladění: [9]

Klasický program Hello World web2py ve své nejjednodušší podobě (zobrazí se nahá webová stránka [15] bez šablony) vypadá takto:

def hello (): return 'Ahoj světe'

Web2py obsahuje šablonovací jazyk založený na čistém Pythonu , který nevyžaduje použití odsazení a serverového modelu objektu dokumentu ( DOM ).

Šablonový engine lze také použít odděleně od web2py. [16] Šablony Joomla 1.x lze převést na šablony web2py. [17]

Web2py se také dodává se dvěma značkovacími knihovnami: filtr markdown2 Archived 19 March 2014 at Wayback Machine text-to-HTML, který převádí značky Markdown na HTML za běhu ; a markmin Archivováno 19. března 2014 na Wayback Machine podobné předchozímu, ale s podporou obou tabulek, html5 video/audio a oembed protokolu.

Řadič , pokud neexistuje odpovídající pohled, automaticky používá univerzální pohled zobrazující proměnné vrácené řadičem, což umožňuje vývoj obchodní logiky aplikace před napsáním rozvržení HTML. Příklad "Hello World" s použitím výchozí šablony:

def hello (): return dict ( pozdrav = 'Ahoj světe' )

Hodnota dict() vrácená akcí (funkcí) se automaticky zobrazí jako HTML, pokud je stránka požadována s příponou .html, jako JSON, pokud je stránka požadována s příponou .json, jako XML, pokud je stránka požadována s příponou . příponu .xml. Další protokoly jako jsonp, rss, ics, google mapy atd. jsou podporovány a lze je rozšířit.

Níže je uveden složitější příklad kódu, který definuje tabulku a dává registrovaným uživatelům možnost upravovat její pole:

db _ define_table ( 'thing' , Field ( 'name' , notnull = True )) @auth . require_login () def hello (): return dict ( grid = SQLFORM . grid ( db . thing ))

Systém sledování chyb

Každá web2py aplikace je dodávána s bug trackerem :

  • Pokud dojde k chybě, zapíše se do protokolů a uživateli se zobrazí zpráva, která umožňuje sledovat chyby.
  • Chyby a zdrojové kódy jsou dostupné pouze administrátorovi, který je může vyhledávat podle data a IP klienta. Žádná chyba nemůže způsobit otevření kódu uživatelům.

Stroj nezávislý cron

Cron je mechanismus pro vytváření a spouštění opakujících se úloh na pozadí. Hledá soubor crontab aplikace ve standardním formátu crontab. K dispozici jsou tři provozní režimy:

  • Soft cron: cron rutiny jsou kontrolovány po práci s obsahem webové stránky, nezaručuje přesné provedení. Pro neprivilegované instalace Apache CGI/WSGI.
  • Hard cron: Cron vlákno se spustí při spuštění web2py. Pro Windows a Rocket/standalone web2py.
  • Systémový cron: cron je nucen spouštět z příkazového řádku , obvykle ze systémového crontab. Pro systémy Unix/Linux a místa, kde potřebujete spouštět spouštěče cron, i když web2py právě neběží; také dobré pro CGI/WSGI, pokud máte přístup k systémovému crontab.

Plánovač úloh

Od verze 2.3 je použití cronu zastaralé, protože web2py je dodáván s plánovačem. Úkoly lze definovat v modelech a plánovat vytvořením záznamu v databázi. Uživatelé mohou spouštět procesy, které provádějí úkoly na pozadí. Plánovač je lepší než cron, protože umožňuje nastavit více parametrů (čas začátku, čas konce, počet opakování, počet pokusů o chybu) a funguje lépe při neustálém využívání zdrojů.

Distribuce ve formě bajtkódu

Web2py umí kompilovat webové aplikace pro distribuci v bajtkódu bez zdrojového kódu. Na rozdíl od frameworků, které používají specializované šablonovací jazyky, Web2py může také kompilovat kód do bajtkódu, protože jde o čistý kód Pythonu.

Globální runtime

Web2py je jedinečný ve světě webových rámců Pythonu, protože modely a řadiče jsou spouštěny, nikoli importová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 designové rozhodnutí má klady i zápory.

Hlavní výhodou je snadný vývoj, konkrétně pro rychlé prototypování. Další výhodou je, že všechny objekty definované v tomto prostředí jsou čistě resetovány při každém požadavku http a nikdy se nesdílejí mezi požadavky. To znamená, že se vývojář nemusí starat o změnu stavu objektu (například čitelný atribut databázového pole) nebo se starat o to, že změna pronikne 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í pod stejnou instancí 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 modelové soubory a soubory kontroléru nejsou moduly a záleží na pořadí provádění (ačkoli jej lze specifikovat pomocí podmíněných modelů). Konflikt pojmenování je pravděpodobnější než v běžných modulech Pythonu. Některé standardní vývojové nástroje Pythonu nemusí rozumět objektům definovaným v modelech a kontrolérech. Vývojáři si navíc musí být vědomi toho, že kód v modelech se spouští při každém požadavku, což může způsobit penalizaci výkonu. Nic ve web2py nebrání vývojářům používat a importovat normální Python moduly (bezmodelový přístup) a pro tento účel web2py poskytuje lokální objekt vlákna (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í, do kterých se setkávají jiné rámce: změna stavu objektu definovaného v modulu může ovlivnit další souběžné požadavky.

Další nevýhodou je, že vzhledem k tomu, ž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 nemožnost dědit od nadřazeného řadiče (např. ApplicationController v Ruby on Rails) znamená, že na běžné funkce řadiče je třeba opakovaně odkazovat. ve všech souborech ovladače.

Podporované platformy

Operační systémy, verze Pythonu, virtuální stroje, hardware

web2py běží na Windows , telefonech s Windows CE , Mac , Unix / Linux , Google App Engine , Amazon EC2 , téměř na jakémkoli webovém hostiteli s Pythonem 2.4 [18] /2.5/2.6/2.7.

Vydané verze web2py zahrnují Python 2.5, ale zdrojovou verzi lze spustit na 2.4 až 2.7.

web2py od verze 1.64.0 běží bez úprav na Javě s Jython 2.5, bez jakéhokoli známého omezení. [19]

kód web2py může běžet s IronPython na .NET . [20] Omezení:

  • žádný modul csv (tedy žádné I/O databáze);
  • žádné databázové ovladače třetích stran (ani SQLite , takže žádné databáze);
  • žádný vestavěný webový server (pokud jej neochromíte odstraněním signálů a protokolováním ).

Binární soubor web2py bude [21] spuštěn z USB disku nebo přenosného pevného disku bez závislostí, jako je Portable Python Archived 12. listopadu 2020 na Wayback Machine .

Webové servery

Web2py odpovídá na požadavky podané přes HTTP a HTTPS pomocí vestavěného serveru Rocket [22] a také Apache , [23] Lighttpd , [24] Cherokee , [25] Hiawatha , Nginx a v podstatě jakýkoli jiný daný webový server, který podporuje CGI , FastCGI , WSGI , mod proxy , [26] [27] [28] 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é vestavěné webové IDE. Jiní preferují specializovanější nástroje poskytující ladění, refaktorování atd.

Práce s databázemi

Databázová abstraktní vrstva ( DAL ) webu web2py transparentně a dynamicky generuje SQL dotazy a spouští je na různých kompatibilních DBMS bez potřeby databázově specifických SQL příkazů (současně lze SQL příkazy spouštět i přímo).

SQLite je součástí Pythonu a je výchozí databází web2py. Změna připojovacího řetězce umožňuje připojení k Firebird , IBM DB2 , Informix , Ingres , Microsoft SQL Server , MySQL , Oracle , PostgreSQL a Google App Engine (GAE) s určitými výhradami. speciality:

  • Více databázových připojení.
  • Automatická tabulka vytváří a mění.
  • automatické transakce .
  • Distribuované transakce :
    • Od web2py v1.17 s PostgreSQL v8.2 a novější, [30] [31] , protože poskytuje API pro dvoufázové commity .
    • Od web2py v1.70.1 s Firebird a MySQL (experimentální).
  • GAE není relační obchod, ale web2py emuluje určité operace.

DAL slibuje vysokou rychlost, alespoň ve srovnání s SQLAlchemy a Storm . [32]

Web2py implementuje DAL, nikoli ORM . ORM mapuje databázové tabulky do tříd představujících logické abstrakce z databázové vrstvy (např. třída User nebo třída PurchaseOrder) a mapuje záznamy do instancí 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á velmi podobnou syntaxi jako ORM, ale je rychlejší a dokáže namapovat téměř všechny výrazy SQL na výrazy DAL. DAL lze použít nezávisle na zbytku web2py. [33]

Následuje několik příkladů syntaxe DAL:

db = DAL ( 'postgresql://user:pass@localhost/db' , pool_size = 10 ) db . define_table ( 'person' , Field ( 'name' ), Field ( 'image' , 'upload' )) db . osoba . insert ( name = 'Martin' , image = open ( 'filename.png' )) rows = db (( db . osoba . jméno == 'Martin' ) | db . osoba . jméno . obsahuje ( 'T' )) . vybrat ( orderby = db . osoba . jméno . nižší ())

Nejnovější verze DAL má podporu pro 2D GIS funkce s Spatialite a PostGIS. Současná rozhraní API jsou experimentální z důvodu možného přechodu na 3D rozhraní API.

Automatická migrace databáze

web2py také podporuje automatizované migrace databází  - pokud změníte definici tabulky, web2py ji odpovídajícím způsobem ZMĚNÍ. Migrace jsou automatické, ale lze je zakázat pro jakoukoli 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 měnit tabulku a měnit typ sloupce, ale jednoduše ukládá nové hodnoty podle nového typu.
  • GAE nemá žádný koncept alter-table, takže migrace jsou omezené.

Licence

Kód Web2py je uvolněn pod licencí GNU Lesser General Public License (LGPL) verze 3 od verze web2py 1.91.1. [34]

Kód Web2py před verzí 1.91.1 byl vydán pod GNU GPL v2.0 s komerční výjimkou.

Různé balíčky třetích stran distribuované s web2py mají své vlastní licence, obecně licence typu Public-domain , MIT nebo BSD . Na aplikace vytvořené pomocí web2py se licence LGPL nevztahuje.

Web2py je chráněn autorským právem Massimo DiPierro. Ochrannou známku „web2py framework“ vlastní Massimo DiPierro .

Ocenění

V roce 2011 InfoWorld zařadil web2py na první místo mezi šesti webovými frameworky Python Archived 15. prosince 2013 na Wayback Machine a udělil web2py cenu Bossie za rok 2011 za nejlepší open source software pro vývoj aplikací . V roce 2012 získal web2py ocenění Technologie roku Archivováno 18. dubna 2014 na Wayback Machine za to, že má Web2py se vším, co potřebujete k vytváření webových aplikací – dokonce i s interpretem Pythonu. Poslání jeho tvůrce vybudovat snadno použitelný rámec se rozšiřuje všude. Vrstva abstrakce databáze Web2py vám umožňuje manipulovat s různými databázemi, aniž byste museli psát jakékoli SQL. Jakmile definujete databázové tabulky, Web2py automaticky vytvoří administrační rozhraní pro vaši aplikaci. Kombinovaná konzole a dashboard Web2py je ve skutečnosti místem, kde se odehrávají všechny vaše aktivity související s vývojem aplikací – dokonce i úpravy vašich aplikačních souborů. A konečně, Web2py vám umožní vložit kód Pythonu do HTML vaší webové stránky, takže se nemusíte učit nový jazyk šablon. Se vší vestavěnou pomocí je Web2py tak bezbolestné, jak jen to jde .

Bibliografie

web2py tutoriál

Dokumentace pro web2py je shromážděna v The Definitive Reference Guide Archived 12 June 2018 at Wayback Machine , Massimo DiPierro . Manuál je k dispozici také v tištěné podobě nebo jako PDF pouze pro čtení.

Online dokumentace

Online dokumentace Archivovaná 19. března 2014 na Wayback Machine je propojena z domovské stránky web2py s kuchařkou , videy, interaktivními příklady, interaktivními odkazy na API, epydocs (kompletní odkazy na knihovnu), FAQ , cheat sheet , online nástroje atd.

Video

Tištěné materiály

Obecné informace

Podpora

Podpora komunity je dostupná prostřednictvím znalostní báze web2py Archivováno 19. března 2014 na Wayback Machine , mailing listu web2py Archivováno 25. června 2012 na Wayback Machine ve Skupinách Google a #web2py kanálu na freenode . [35] K 2009-10-02 komerční web2py podporu poskytuje patnáct společností po celém světě. [36]

Vývojáři

Hlavním vývojářem web2py je profesor Massimo DiPierro , docent informatiky na DePaul University v Chicagu . Od roku 2011 domovská stránka web2py uvádí více než 70 „hlavních přispěvatelů“. [37]

Zdrojový kód

Zdrojový kód web2py je dostupný ze dvou úložišť:

Komponenty třetích stran používané ve web2py

Historie a název

Zdrojový kód pro první veřejnou verzi web2py vydal pod licencí GNU GPL v2.0 27. září 2007 Massimo DiPierro pod názvem Enterprise Web Framework (EWF). Kvůli konfliktu názvů se název musel změnit dvakrát: EWF v1.7 byl nahrazen Gluonem v1.0 a Gluon v1.15 byl následován web2py v1.16. Licence byla změněna na LGPLv3 s vydáním web2py verze 1.91.1 dne 21.12.2010.

Aplikace vytvořené pomocí Web2py

  • Movuca CMS a engine sociálních sítí.
  • Platforma Instant Press Blog .
  • Sociální síť Ourway .
  • Portál NoobMusic o rockové hudbě.
  • LinkFindr Nástroj pro diagnostiku sítě.
  • StarMaker Tvorba karaoke hudebních a sociálních aplikací.

Delší seznam se snímky obrazovky najdete zde Archivováno 14. března 2014 na Wayback Machine a zde Archivováno 19. března 2014 na Wayback Machine . Seznam pluginů naleznete zde

Poznámky

  1. Vydání 2.21.1 – 2020.
  2. Web2py Framework - 2020.
  3. Web2py (2013), Co je web2py?, web2py.com, staženo 11. října 2013, < http://www.web2py.com/init/default/what Archivováno 17. ledna 2020 na Wayback Machine >
  4. Web2py od verze 1.63 podporuje mnoho protokolů . Získáno 19. března 2014. Archivováno z originálu dne 24. dubna 2018.
  5. Použití SOAP s web2py . Získáno 19. března 2014. Archivováno z originálu dne 24. dubna 2018.
  6. Psaní inteligentních webových formulářů (odkaz není k dispozici) . Získáno 19. března 2014. Archivováno z originálu 30. června 2017. 
  7. Rocket Web Server . Získáno 19. března 2014. Archivováno z originálu dne 29. listopadu 2020.
  8. Web2py online IDE Archivováno 8. září 2012 na Wayback Machine s It's All Text!  (odkaz není k dispozici) Doplněk pro Firefox a Ulipad Archivovány 12. března 2014 na Wayback Machine (open source Python IDE)
  9. Jak ladit Web2py aplikace? . Datum přístupu: 19. března 2014. Archivováno z originálu 19. března 2014.
  10. Wing IDE podporuje ladění pro web2py . Datum přístupu: 19. března 2014. Archivováno z originálu 12. února 2014.
  11. Eclipse/PyDev podporuje ladění pro web2py . Získáno 19. března 2014. Archivováno z originálu 13. února 2010.
  12. Použití web2py na Eclipse . Získáno 19. března 2014. Archivováno z originálu 19. prosince 2010.
  13. S Winpdb lze provádět vzdálené ladění přes TCP/IP (downlink) . Získáno 19. března 2014. Archivováno z originálu 9. listopadu 2015. 
  14. Šifrovaná komunikace ve Winpdb (downlink) . Získáno 19. března 2014. Archivováno z originálu 9. listopadu 2015. 
  15. Nejjednodušší webová stránka s web2py: příklad "Hello World" . Získáno 19. března 2014. Archivováno z originálu dne 29. května 2019.
  16. Jak používat web2py šablony bez web2py . Získáno 19. března 2014. Archivováno z originálu 14. února 2012.
  17. Používání šablon Joomla s web2py . Získáno 19. března 2014. Archivováno z originálu dne 24. dubna 2018.
  18. Jak spustit web2py s Pythonem 2.4 . Získáno 19. března 2014. Archivováno z originálu 31. října 2013.
  19. Web2py běží plně na Javě a J2EE pomocí Jythonu . Získáno 19. března 2014. Archivováno z originálu 9. listopadu 2012.
  20. Web2py běží s IronPython na .NET, s omezeními . Získáno 19. března 2014. Archivováno z originálu dne 25. dubna 2014.
  21. MySQL s binárním systémem web2py Windows na USB flash disku . Získáno 19. března 2014. Archivováno z originálu dne 26. května 2012.
  22. Jak spustit vestavěný SSL server . Získáno 19. března 2014. Archivováno z originálu 15. dubna 2015.
  23. Web2py s Apache a mod_ssl . Datum přístupu: 19. března 2014. Archivováno z originálu 7. června 2012.
  24. Web2py s Lighttpd a FastCGI . Získáno 19. března 2014. Archivováno z originálu dne 25. dubna 2014.
  25. Web2py s Cherokee . Získáno 19. března 2014. Archivováno z originálu 2. prosince 2013.
  26. Modul Apache mod_proxy . Získáno 19. března 2014. Archivováno z originálu 10. února 2011.
  27. Web2py s mod_proxy . Získáno 19. března 2014. Archivováno z originálu 31. října 2013.
  28. Web2py s mod_proxy a mod_proxy_html . Získáno 19. března 2014. Archivováno z originálu dne 18. března 2014.
  29. Použití Wing IDE s web2py . Datum přístupu: 19. března 2014. Archivováno z originálu 12. února 2014.
  30. Distribuované transakce s PostgreSQL Archivováno 14. dubna 2009.
  31. Distribuované transakce s PostgreSQL — další podrobnosti
  32. Benchmark ORM . Získáno 19. března 2014. Archivováno z originálu 31. října 2013.
  33. Jak používat web2py DAL bez web2py . Datum přístupu: 19. března 2014. Archivováno z originálu 1. listopadu 2013.
  34. Licenční smlouva web2py . Získáno 19. března 2014. Archivováno z originálu dne 25. dubna 2014.
  35. Kanál IRC #web2py Archivováno 27. října 2009.
  36. Komerční podpora pro web2py . Datum přístupu: 19. března 2014. Archivováno z originálu 19. března 2014.
  37. Seznam hlavních přispěvatelů do web2py . Datum přístupu: 19. března 2014. Archivováno z originálu 19. března 2014.

Odkazy