Piramis (webes keretrendszer)

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] .

Történelem

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]

Alapelvek és fogalmak

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.

Jellemzők

A piramis fő előnyei [4] :

A keretrendszer használata alkalmazás fejlesztéséhez

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.py

A 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.

URL diszpécser és erőforrásfa bejárás

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]

Konfiguráció

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.

HTML generálás

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.

Példa

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é ()

Alkalmazás

Jegyzetek

  1. 2.0 kiadás – 2021.
  2. A piramis keretről . Letöltve: 2012. július 8. Az eredetiből archiválva : 2012. július 23.
  3. BFG átnevezve Piramisra (downlink) . Letöltve: 2012. július 8. Az eredetiből archiválva : 2010. november 13.. 
  4. 1 2 Bevezetés a piramisba . Letöltve: 2012. július 8. Az eredetiből archiválva : 2012. június 15.
  5. Az "MVC"-ről a Piramisban . Letöltve: 2012. július 8. Az eredetiből archiválva : 2012. június 15.
  6. Portolás Python 3-ra . Letöltve: 2012. július 8. Az eredetiből archiválva : 2020. október 1..
  7. állványzathoz hasonló
  8. A Piramis projekt felépítése . Hozzáférés dátuma: 2012. július 9. Az eredetiből archiválva : 2012. június 22.
  9. A piramis egyedi tulajdonságairól . Letöltve: 2012. július 9. Az eredetiből archiválva : 2014. szeptember 12..
  10. Bypass algoritmus . Letöltve: 2012. július 9. Az eredetiből archiválva : 2012. június 10.
  11. A konfigurációról . Letöltve: 2012. július 8. Az eredetiből archiválva : 2012. június 15.
  12. Sablonmotorok . Letöltve: 2012. július 9. Az eredetiből archiválva : 2012. június 15.
  13. Piramis dokumentáció. . Hozzáférés dátuma: 2012. július 8. Az eredetiből archiválva : 2012. június 29.

Linkek

Irodalom