Ofelia to projekt Pythona, który tworzy strony XHTML z szablonów zapisanych w TAL, Zope TALES. & Nbsp; jest on zaprojektowany w celu zmniejszenia kodu powtórzenia do zera.
Pakiet zawiera zarówno aplikację WSGI działa Ofelii, jak również obsługi wniosku o mod_pythonem, moduł Pythona dla serwera WWW Apache2.
Pliki dokumentacji wymienione poniżej można znaleźć wewnątrz katalogu pakietu, razem z kilkoma doctests dla modułów.
Punkty Wejście
Po zainstalowaniu Ofelii i napisał kilka szablonów, jak można zrobić to renderowanie stron internetowych?
Użyj Ofelii z Apache
Pakiet Pythona zawiera ophelia.modpython moduł, który zapewnia obsługi żądań dla modułu mod_pythona Apache.
Użyj Ophelia jako aplikacja WSGI
Ofelia definiuje klasę aplikacji zgodnej ze standardem WSGI PEP 333: ophelia.wsgi.Application. Możesz albo spróbować go uruchamiając własny serwer HTTP Ofelii wsgiref oparte lub uruchomić go przez dowolny serwer może WSGI obchodzi w użyciu.
Serwer wsgiref oparte jest zainstalowany jako Ofelia-wsgiref wykonywalnego, jeśli jest zainstalowany jako Ofelia jajka z "ekstra" wsgiref włączoną. Jego punkt wejścia skrypt jest ophelia.wsgi.wsgiref_server.
Dump pojedynczych stron na stdout
Wykonywalny, który jest zawsze instalowany z jajkiem Ophelia Ophelia-dump. Skrypt ten ma Ofelia wyświetlać odpowiedź odpowiadającą określonej ścieżki i drukuje go sys.stdout, ewentualnie z nagłówków HTTP. Punkt wejścia skrypt jest ophelia.dump.dump.
Oba skrypty zapewnić pewne instrukcje obsługi, gdy uruchomiony z opcją --help. Czytali plik konfiguracyjny; zobacz CONFIGURATION.txt szczegóły.
Jakie stron jest Ofelia dobre dla?
Zawartość statyczne
Zastanów Ophelia jako SSI na leki. To nie jest zasadniczo różne, po prostu dużo bardziej przyjazny i zdolne.
Użyj Ophelia dla miejsc, w których można w zasadzie napisać kod HTML samodzielnie, chyba że trzeba napisać powracającą rzeczy tylko raz. Ograniczenie powtórzenia do zera jest w cenie: witryna musi być zgodne z wzorcem dla Ofelia łączenie szablonów właściwą drogę.
Rozważmy układ witryny, aby być hierarchiczna: jest wspólne spojrzenie na wszystkie strony, sekcje mają pewne cechy, a każda strona posiada niepowtarzalną treść. Jest to niezbędne do Ofelii, że hierarchia ta odzwierciedla w organizacji systemu plików w dokumentach; jak szablony łączą się wywnioskować z ich miejsca w hierarchii katalogów.
Zawartość dynamiczna
Ofelia sprawia języka Python dostępnych na tym dynamicznej zawartości. Każdy szablon może zawierać skrypt Pythona. Skrypty Pythona i szablony przyczyniające się do udziału stron wspólny zestaw zmiennych do modyfikowania i używania.
Zawartość modelu Ofelii jest bardzo prosty i działa najlepiej, jeśli każdy obiekt, który publikuje treść jest jej własny pogląd: strona jest reprezentowana. Jeśli pojawi się zawartość z zasobów zewnętrznych i tak (na przykład bazy danych lub repozytorium kontroli wersji), to jeszcze OK, aby użyć Ofelii, nawet z wieloma widokami na obiekcie treści jak długo widokiem obiektu, nie zależy od rodzaju obiektu lub nawet obiektu Sam.
Próba użycia Ophelia na bardziej złożoną miejscu doprowadzi do brzydkiego uwikłania logiki i prezentacji. Nie stosować Ofelii do miejsc, które są w rzeczywistości interfejsów internetowych do aplikacji, systemy zarządzania treścią i tym podobne.
Jak Ofelia działa
Pliki szablonów
Dla każdego żądania, Ofelia szuka wielu plików szablonu. Wystarczy jeden plik o nazwie "__init__" z każdego katalogu na ścieżce od katalogu głównego serwisu do strony, oraz ostateczną jeden dla samej strony. Wniosek jest obsługiwana przez Ofelii, jeśli zostanie stwierdzone, że ostateczne szablonu.
Przy budowie strony, szablon strony jest oceniany, a jego zawartość przechowywane w tzw wewnętrzne gniazdo. Następnie każdy szablon w drodze powrotnej ze strony do katalogu głównego ocenia z kolei i może zawierać aktualną zawartość wewnętrznej gniazda. Wynik jest przechowywany w wewnętrznej szczelinie po każdym etapie.
Wynikiem przetwarzania szablonu głównego podawane jest jako strona.
Skrypty Pythona
Każdy szablon może zacząć skrypt Pythona. W takim przypadku, skrypt jest oddzielona od szablonu w pierwszym wystąpieniu " Xml?>" Tag na linii własnych (z wyjątkiem białych znaków w lewo lub w prawo). Jeśli plik szablonu zawiera tylko skrypt Pythona, ale w rzeczywistości nie szablonu, umieścić " Xml?>" W ostatnim wierszu.
Skrypty w Pythonie są wykonywane w kolejności podczas przechodzenia z katalogu głównego serwisu do strony. Są one uruchamiane w tej samej przestrzeni nazw zmiennych, które są później wykorzystywane jako kontekście oceny szablonów. Zmienne, które są ustalone przez skrypt Pythona mogą być wykorzystywane i modyfikowane w jakikolwiek skryptów uruchamianych później, a także opowieści wyrażeń użytych w szablonach.
Nazw zostaje zainicjowany przez Ofelia jednym zmiennej, która odwołuje __request__, obiekt żądania. Tak więc, skrypty mają dostęp do informacji i wewnętrznych żądań traversal. Oprócz zmiennych określających, skrypty mogą również importować moduły, definiowanie funkcji, dostęp do systemu plików, i ogólnie niczego Program Python może zrobić.
Jak Ofelia zachowuje
Kanonizacji i przekierowania URL
Jeśli Ofelia napotka adres URL, który odpowiada katalogu zachowuje się podobnie do Apache w konfiguracji domyślnej: Jeśli adres URL nie kończyć kreską, nastąpi przekierowanie przeglądarki, aby dodać ukośnik. Jeśli ukośnik ma, będzie starał się znaleźć szablon o nazwie index.html domyślnie i uczynić go jako katalogu "index".
W zależności od konfiguracji, wyraźne żądania stron indeksu katalogu może zostać przekierowany do gołej URL katalogu bez segmentu ścieżki końcowym. To uczyniłoby
Dodatkowo, Ofelia kanonicznej adresy URL zawierające segmenty ścieżki "." i "..", zgodnie z RFC 3986 na rodzajowym składni URI i usuwa puste segmenty ścieżek, które nie znajdują się na końcu ścieżki. Jeżeli adres URL zmienia się tych zasad, Ofelia przekierowuje przeglądarkę odpowiednio.
Obsługi mod_pythona
Apache2 przetwarza żądanie w fazach, z których każda może być obsługiwane przez moduły takie jak mod_pythonem. Ofelia zapewnia obsługi mod_pythona fazie zawartości generacji. Jeśli w zapytaniu URL jest skonfigurowany do obsługi przez Ofelii, obsługi próbuje znaleźć odpowiednie szablony w systemie plików i zbudować stronę z nich.
Mod_pythona obsługi Ofelii nie powoduje File Not Found Błąd HTTP. Zamiast tego, przechodzi kontrolę z powrotem do Apache i innych modułów, jeżeli stwierdzi, że nie można budować konkretny zasób. Apache wraca na służbę statycznej zawartości z dysku w tym przypadku. Ofelia może więc być zainstalowane na szczycie statycznym miejscu do obsługi tylko te wnioski, dla których istnieją szablony w katalogu szablonu
Wymagania .
- Python
Komentarze nie znaleziono