RkBlog

Hardware, programming and astronomy tutorials and reviews.

Pierwsze kroki z Pylons

Niniejszy tutorial przedstawia podstawy tworzenia aplikacji www we frameworku Pylons.

Instalacja

Jeżeli mamy easy install to zainstalować możemy (spróbować) poprzez:
easy_install Pylons
Drugi sposób to pobranie pliku http://peak.telecommunity.com/dist/ez_setup.py i wywołanie go:
python ez_setup.py Pylons
By zainstalować również wszystkie dodatki wystarczy dodać "[full]" - easy_install Pylons[full] lecz nie wszystkie dodatkowe komponenty mogą być sprawne.

Tworzenie Projektów

By utworzyć nowy projekt wystarczy w konsoli wykonać polecenie:
paster create --template=pylons NAZWA_PROJEKTU
Stworzy to katalog o nazwie takiej jak nazwa projektu oraz utworzyć bazowe pliki. Dla przykładu utwórzmy projekt test:
paster create --template=pylons test
Po wejściu do katalogu projektu zobaczymy:
README.txt
development.ini
setup.cfg
setup.py
	test
	test.egg-info
Podkatalog test (taki sam jak nazwa projektu) zawiera kod opowiedzialny za nasz projekt i to tam będziemy wszystko robić. Zawartość tego katalogu to:
__init__.py
	config
	controllers
	docs
	i18n
	lib
	models
	public
	templates
	tests
websetup.py
Katalog config zawiera pliki konfiguracyjne naszego projektu. Katalog controllers zawiera nasze kontrolery odpowiedzialne za to co i jak wyświetlić (spinają wszystko razem). Katalog docs przeznaczony jest na dokumentację, a katalog i18n zawierać będzie pliki tłumaczeń dla wielojęzycznych aplikacji (gettext). Katalog lib przeznaczony jest na kod używany przez wiele kontrolerów, pliki osób trzecich i wszystko co nie pasuje do innych katalogów. W models przechowujemy nasze modele czyli klasy operujące na danych w bazach danych. Obiekty zdefiniowane w models/__init__.py będą załadowane i dostępne w kontrolerach jako model.NazwaObiektu.
Katalg public służy do przechowywania plików statycznych (JS, grafika itd.), W tests umieszczamy nasze testy obsługiwane przez paste.fixture i Nose. Katalog templates służy do przechowywania szablonów.

Uruchamianie serwera Pylons

Framework posiada swój własny serwer stosowany przy tworzeniu aplikacji. By uruchomić serwer wystarczy wykonać w głównym katalogu projektu polecenie:
paster serve --reload development.ini
Pod adresem http://localhost:5000/ powinniśmy zobaczyć stronę "powitalną" frameworka.
darmowy hosting obrazków


Szablony, pliki statyczne i reszta ferajny

W katalogu test/public utwórz plik pliczek.html o zawartości:
Jestem pliczek
Plik ten jest teraz dostępny pod adresem http://localhost:5000/pliczek.html. Domyślnie w Pylons pierwszeństwo nad treścią dynamiczną mają pliki z katalogu public (w przypadku takich samych URLi wywołany zostanie plik statyczny).

W katalogu test/controllers utwórz kontroler - plik hello.py o kodzie:
from test.lib.base import *

class HelloController(BaseController):
    def index(self):
        return Response('witam wszystkich')
Nasz kontroler wywołać możemy poprzez URLe (może wymagać to restartu serwera):
http://localhost:5000/hello
http://localhost:5000/hello/index
Pylons mapuje URLe, a dokładniej "zmienne" wg. schematu: kontroler/akcja/zmienne... Oprócz tego jeżeli nie podanym nazwy akcji to zostanie wykonana metoda index. Mapowanie to można jednak praktycznie dowolnie zmieniać i tworzyć określone dowiązania metod kontrolerów z określonymi linkami, a wszystko dzięki bibliotece Routes i plikowi config/routes.py

Szablony Myghty

Domyślnie Pylons korzysta z szablonów Myghty (choć można użyć innych). Stwórzmy plik szablon.myt w katalogu test/templates (przyjmuje się że rozszerzenie myt dotyczy szablonów myghty) o kodzie:
<p>Zmienne serwera: <br />
<% str(request.environ) %></p>

<p>
URL: <% h.url_for() %>
</p>
A następnie zmodyfikujmy nasz kontroler do postaci:
from test.lib.base import *

class HelloController(BaseController):
    def index(self):
        return Response('witam wszystkich')
    def serverinfo(self):
        return render_response('/szablon.myt')
Pod adresem http://localhost:5000/hello/serverinfo zobaczymy nasz szablon w działaniu wraz ze zmiennymi serwera.
Pylons 1.0 i być może kilka wcześniejszych wersji będą domyślnie używać szablonów Mako.


Zmienne globalne frameworka

session - zachowuje się jak słownik, przechowuje dane o sesjach
request - obiekt rządania
response - klasa odpowiedzi
abort - funkcja przerywająca proces i generująca HTTPException
redirect_to - funkcja przekierowująca na inny URL poprzez status HTTP 302
render - funkcja parsująca szablon i zwracająca łańcuch
render_response - parsuje szablon i zwraca Odpowiedź (Response)
h - składnica "pomocników" (helpers) frameworka, od Ajaxa po inne przydatne komponenty.
c - służy do przekazywania zmiennych do szablonu

Przekazywanie zmiennych do szablonów

Zmień kod metody serverinfo kontrolera hello na :
def serverinfo(self):
	c.zmienna = 'Jurek'
        return render_response('/szablon.myt')
a kod szablonu na:
<h1><% c.zmienna %></h1>
I gotowe. Zmienna przekazana i wyświetlona.
RkBlog

Pylons, 14 July 2008, Piotr Maliński

Comment article