Piramis | |
---|---|
Típusú | Webes alkalmazás keretrendszer |
Fejlesztő | Ben Bangert, James Gardner |
Beírva | Piton |
Operációs rendszer | Cross platform |
Első kiadás | 2010. december_ _ |
legújabb verzió |
|
Engedély | BSD |
Weboldal | pylonsproject.com |
A Pyramid ( angolul pyramid - pyramid ) egy szoftver keretrendszer (keretrendszer) nyílt forráskódú , Python nyelven írt webalkalmazások fejlesztésére a Pylons projekt részeként [2] .
A Pyramid létrehozását olyan keretrendszerek befolyásolták, mint a Zope , a Pylons és a Django . A Pyramid kódot a repoze.bfg projektben fejlesztették ki, a név pedig a BFG és a Pylons projektek egyesülése következtében változott meg. [3]
A piramis tervezése a következő elveken alapul [4] :
Tervezésük védelmében a Piramis szerzői egy meglehetősen nagy dokumentumot írtak, amely a kerettel kapcsolatos mítoszokat hivatott eloszlatni. Például a Piramis MVC -modelljének kritikáját követi egy részletes magyarázat, miszerint az MVC „messziről jött” a webes alkalmazásokhoz. A következő idézet [5] jól jellemzi a piramis terminológiájának megközelítését:
Úgy gondoljuk, hogy csak két dolog van: erőforrások (erőforrás) és nézetek (nézet). Az erőforrásfa a webhely szerkezetét, a nézet pedig az erőforrást képviseli. Sablonok _
a valóságban csak egy nézet megvalósítási részlete: szigorúan véve nem szükségesek, és a nézet ezek nélkül is választ (választ) adhat. Nincs "vezérlő" (vezérlő): egyszerűen nem létezik. A „modell” vagy egy erőforrásfa, vagy egy „tartománymodell” (például az SQLAlchemy modell ), amely egyáltalán nem része a keretrendszernek. Számunkra úgy tűnik, hogy terminológiánk ésszerűbb a webes technológiák jelenlegi korlátai miatt.
Eredeti szöveg (angol)[ showelrejt]...[Mi] azt mondjuk, hogy két dolog van: források és nézetek. Az erőforrásfa egy webhelyszerkezetet, a nézet pedig egy erőforrást képvisel. A sablonok valójában csak egy adott nézet megvalósítási részletei: a nézetnek nincs szüksége sablonra a válasz visszaadásához. Nincs "vezérlő": egyszerűen nem létezik. A „modellt” vagy az erőforrásfa, vagy egy „tartománymodell” (például egy SQLAlchemy-modell) képviseli, amely teljesen elkülönül a keretrendszertől. Számunkra ez ésszerűbb terminológiának tűnik, tekintettel a web jelenlegi korlátaira.
A piramis fő előnyei [4] :
Bár nem nehéz a semmiből megírni egy Pyramid alkalmazást (projektet), a Pyramid rendelkezik eszközökkel egy új alkalmazás kódjának inicializálására a választott sablon, vagy a Pyramid terminológiával élve scaffoldok szerint [ 7 ] . Például a disztribúció keretrendszereket tartalmaz a ZODB -t vagy az SQLAlchemyt használó projektekhez .
A projekt egy olyan könyvtár, amely legalább egy Python - csomagot tartalmaz .
Tipikus címtárstruktúra kis projektekhez:
Saját Projekt/ | -- CHANGES.txt | -- fejlesztés.ini | -- MANIFEST.in | -- myproject | | -- __init__.py | | -- statikus | | | -- favicon.ico | | | -- logo.png | | ` -- pylons.css | | -- sablonok | | ` -- mytemplate.pt | | -- tests.py | ` -- views.py | -- gyártás.ini | -- README.txt | -- setup.cfg ` -- setup.pyA fenti struktúrán, amint az a dokumentációból következik, nem érdemes sokat változtatni, mert ez akadályozhatja a többi fejlesztőt abban, hogy gyorsan navigáljon a projekt kódjában [8] . Egy növekvő projekt azonban változtatásokat igényelhet. Például a nézetek, modellek (ha használják) és tesztek modulokra oszthatók, és átvihetők a nézetek, modellek és tesztek alkönyvtárakba (ne felejtse el ellátni őket egy fájllal __init__.py).
A projekt lehet például egy buildben (mondjuk az src könyvtárban), amely az összes szükséges összetevőt összerakja. Nem szükséges, hogy egy piramisprojekt egyetlen csomagból álljon. A projekt méretének csak a fejlesztők kellő ismerete szab határt a Pyramid képességeiről [9] .
A Pyramid bármely WSGI szerverrel működhet. Az előre elkészített keretrendszerekből létrehozott projektek a Waitress szervert használják.
Minden bejövő kérésnek (kérelemnek) a Pyramid alkalmazáskiszolgálóhoz kell találnia egy nézetet (nézetet), amely feldolgozza azt.
A Piramisban két alapvető megközelítés létezik a feldolgozott kérés típusának megtalálására: az egyeztetés (illesztés) alapján, mint a legtöbb hasonló keretrendszerben, és a megkerülés (bejárás), mint a Zope esetében . Ezenkívül mindkét megközelítés sikeresen kombinálható egy alkalmazásban.
A legegyszerűbb példa az útvonal beállítására (a dokumentációból kölcsönözve):
# Itt a config a pyramid.config.Configurator config példánya . add_route ( 'ötlet' , 'site/ {id} ' ) config . add_view ( 'mypackage.views.site_view' , route_name = 'ötlet' )A bypass használatát egy kis példa szemlélteti legjobban:
from wsgiref.simple_server import make_server from pyramid.config import Configurator from pyramid.response import Response # Valamelyik erőforrás osztály osztálya Resource ( dict ): pass # Erőforrásfa (keménykódolt) a gyökérgyárban def get_root ( request ): return Erőforrás ({ 'a' : Erőforrás ({ 'b' : Erőforrás ({ 'c' : Erőforrás ()})})}) # View-to-invoke, amely képes megjeleníteni az erőforrás-erőforrást (kontextusban) def hello_world_of_resources ( kontextus , kérés ): output = "Erőforrás és gyermekei: %s " % kontextus return Response ( output ) if __name__ == '__main__' : config = Konfigurátor ( root_factory = get_root ) config . add_view ( hello_world_of_resources , context = Erőforrás ) app = config . make_wsgi_app () server = make_server ( '0.0.0.0' , 8080 , alkalmazás ) szerver . szolgál_örökké ()Ebben a példában a bejárási hierarchia get_rootbeágyazott szótárak segítségével van bekódolva a metódusba, míg a valódi alkalmazásoknak kulcsokkal kell meghatározniuk a szükséges hozzáférést (a metódus __getitem__segít megszervezni az ilyen hozzáférést). A kód tartalmaz egy gyökérgyárat is , amelytől ténylegesen megkezdődik az erőforrásfa csomópontjainak (csomópontjainak) bejárása. A hívható nézetet a hello_world_of_resources. Leegyszerűsítve, a kérés URL-je alapján a Pyramid bejárja a hierarchiát, megkeresi az erőforrást, és a „legjobb” view-to-call-t alkalmazza rá (példánkban ez az egyetlen). [tíz]
Egy alkalmazás konfigurálása, vagyis a működését befolyásoló beállítások megadása a Piramisban kétféleképpen történhet: kötelező és deklaratív módon.
A kötelező konfigurálás a konfigurátor metódusainak meghívásával történik közvetlenül az alkalmazás indítása előtt.
A deklaratív konfigurációt a nézetdekorátorok adják meg. Indítás előtt az alkalmazást scan()a konfigurátor módszerrel „ellenőrzi” a konfigurációs paraméterekért. Példa a dokumentációból:
from pyramid.response import Válasz a pyramid.view importból view_config @view_config ( name = 'hello' , request_method = 'GET' ) def hello ( request ): return Response ( 'Hello' )Mindkét konfigurációs módszer teljesen felcserélhető. [tizenegy]
Aki szeretné, a megfelelő csomag telepítésével a ZCML segítségével konfigurálhatja.
A Piramisban különféle motorokat használhat HTML generálására. Tehát a Chameleon és a Mako benne van a szállításban. [12] Rajtuk kívül másokat is felvehetsz, például Jinja2 .
Az űrlapokkal való munka például a Peppercorn-Colander-Deform hármasság használatával végezhető el.
Az egyik legegyszerűbb alkalmazás a piramishoz [13] :
from wsgiref.simple_server import make_server from pyramid.config import Configurator from pyramid.response import Response def hello_world ( request ): return Response ( 'Hello %(name)s !' % request . matchdict ) if __name__ == '__main__' : config = Konfigurátor () config . add_route ( 'hello' , '/hello/ {név} ' ) config . add_view ( hello_world , route_name = 'hello' ) app = config . make_wsgi_app () server = make_server ( '0.0.0.0' , 8080 , alkalmazás ) szerver . szolgál_örökké ()Piton | |
---|---|
Közösség | |
Megvalósítások | |
Egyéb |
|