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 |
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) .
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] .
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 ))Každá web2py aplikace je dodávána s bug trackerem :
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:
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ů.
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.
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.
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í:
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 .
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 .
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.
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:
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.
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í:
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 .
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 .
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 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.
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]
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 web2py je dostupný ze dvou úložišť:
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.
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
Krajta | |
---|---|
Společenství | |
Implementace | |
jiný |
|