Ophelia är en Python projekt som skapar XHTML-sidor från mallar skrivna på TAL, den Zope Mall Attribute Språk & nbsp;. Den är utformad för att minska kodrepetition till noll.
Paketet innehåller både en WSGI program som körs Ophelia samt en begäran hanterare för mod_python, Python modul för Apache2 webbserver.
Dokumentationsfiler som anges nedan kan hittas inuti förpackningen katalogen, tillsammans med ett antal doctests för modulerna.
Entry punkter
Efter att du installerat Ophelia och skrev några mallar, hur kan du göra det rendera webbsidor?
Använd Ophelia med Apache
Python-paketet innehåller en modul ophelia.modpython som ger en begäran hanterare för mod_python Apache-modulen.
Använd Ophelia som WSGI ansökan
Ophelia definierar ett program Klasskompatibel med WSGI standarden, PEP 333: ophelia.wsgi.Application. Du kan antingen prova det genom att köra Ophelias egen wsgiref baserade HTTP-server eller köra den genom någon WSGI server du kanske bryr dig att använda.
Den wsgiref-baserad server är installerad som ophelia-wsgiref körbara om Ophelia installeras som ett ägg med "wsgiref" extra aktiverad. Dess manus inkörsport är ophelia.wsgi.wsgiref_server.
Dumpa enstaka sidor till stdout
En körbar som alltid installeras med ophelia ägget är ophelia-dump. Detta skript har Ophelia att den motreaktion som motsvarar den väg du anger, och skriver den till sys.stdout, eventuellt med HTTP-huvuden. Skriptet inträde punkten är ophelia.dump.dump.
Båda skript ge några instruktioner användnings när anropas med --help alternativet. De läser en konfigurationsfil; se CONFIGURATION.txt för detaljer.
Vilken typ av platser är Ophelia bra för?
Statiskt innehåll
Tänk Ophelia som SSI om narkotika. Det är inte fundamentalt annorlunda, bara en mycket vänligare och mer kapabla.
Använd Ophelia för webbplatser där du i princip skriva din HTML själv, förutom att du behöver skriva återkommande grejer bara en gång. Minska upprepning till noll har ett pris: din webbplats måste följa ett mönster för Ophelia att kombinera dina mallar på rätt sätt.
Tänk på din webbplats layout för att vara hierarkisk: det finns en gemensam titt på alla dina sidor, avsnitt har vissa egenskaper, och varje sida har unikt innehåll. Det är viktigt att Ophelia att denna hierarki reflekterar i filsystemet organisera dina dokument; hur mallar kombinerar härleds från sina platser i hierarkin av kataloger.
Dynamiskt innehåll
Ophelia gör Python-språket tillgänglig för bland annat dynamiskt innehåll. Varje mallfil kan innefatta ett Python-skript. Python-skript och mallar som bidrar till en sida dela en gemensam uppsättning variabler för att modifiera och använda.
Ophelias innehållsmodell är mycket enkel och fungerar bäst om varje innehållsobjekt du publicerar är sin egen uppfattning: sidan det representeras på. Om du får innehåll från externa resurser ändå (t.ex. en databas eller ett versionskontroll förvar), det är fortfarande OK att använda Ophelia även med flera vyer per innehållsobjekt så länge ett objekts åsikter inte beroende på objektets typ eller ens objektet själv.
Försök att använda Ophelia på en mer komplex plats kommer att leda till en ful hoptrassling av logik och presentation. Använd inte Ophelia för webbplatser som faktiskt webbgränssnitt till program, content management system och liknande.
Hur Ophelia fungerar
Mall filer
För varje begäran, Ophelia ser för ett antal mallfiler. Det tar en fil som heter "__init__" från varje katalog på vägen från platsen roten till sidan, och en sista för själva sidan. Begäran är betjänad av Ophelia om det slutliga mall hittas.
När man bygger sidan, är sidans mall utvärderas och dess innehåll som lagras i vad som kallas den inre facket. Då varje mall på väg tillbaka från sidan till roten utvärderas i sin tur och kan innefatta nuvarande innehållet i innerfacket. Resultatet lagras i det inre facket efter varje steg.
Resultatet av bearbetning av roten mall serveras som på sidan.
Python skript
Varje mallfil kan börja med ett Python-skript. I det fallet har skriptet separeras från mallen genom den första förekomsten av en "? Xml>" tag på en egen rad (med undantag för blank vänster eller höger). Om mallfilen innehåller endast ett Python-skript, men egentligen inte en mall, sätta " Xml?>" I sin sista raden.
Python-skript exekveras i ordning medan korsar från sajten roten till sidan. De körs i samma namespace variabler som senare används som utvärderings sammanhang mallarna. Variabler som anges av ett Python-skript kan användas och modifieras av eventuella skript körs senare, samt av Tales uttryck som används i mallarna.
Namnutrymmet initieras av Ophelia med en enda variabel, __request__, som refererar begäran objektet. Således manus har tillgång till förfrågnings detaljer och traverse interna. Förutom att inställningsvariabler, kan skript också importera moduler, definiera funktioner, tillgång till filsystemet, och i allmänhet göra något ett Python-program kan göra.
Hur Ophelia beter
URL kanonisering och omdirigering
Om Ophelia påträffar en webbadress som motsvarar en katalog beter sig på samma sätt som Apache i standardkonfigurationen: Om webbadressen inte slutar med ett snedstreck, kommer det att omdirigera webbläsaren för att lägga till snedstreck. Om slash är där, kommer det att försöka hitta en mall som heter index.html som standard, och göra det som katalogen "index".
Beroende på konfiguration kan explicita krav på katalogindexsidor omdirigeras till nakna katalogwebbadresser utan den slutliga vägen segmentet. Detta skulle vända
Dessutom Ophelia canonicalizes webbadresser som innehåller bansegment "." och ".." enligt RFC 3986 om generiska URI syntax, och tar bort tomma bansegment som inte i slutet av sökvägen. Om URL ändras med dessa regler, Ophelia omdirigerar webbläsaren därefter.
Den mod_python hanterare
Apache2 behandlar en begäran i etapper, som var och en kan hanteras av moduler som mod_python. Ophelia ger ett mod_python hanterare för innehållet generationen fasen. Om en begärd URL är konfigurerad att hanteras av Ophelia, försöker föraren att hitta lämpliga mallar i filsystemet, och bygga en sida från dem.
Ophelias mod_python handler orsakar aldrig en fil hittades inte HTTP-fel. Istället skickar den kontrollen tillbaka till Apache och andra moduler, om den finner det kan inte bygga en viss resurs. Apache faller tillbaka till servering statiskt innehåll från disk i så fall. Ophelia kan alltså installeras ovanpå en statisk webbplats för att hantera just de ansökningar för vilka det finns mallar i mallkatalogen
Krav :.
- Python
Kommentarer hittades inte