RkBlog

Hardware, programming and astronomy tutorials and reviews.

Pierwsze kroki z Pylons

Wprowadzenie do frameworka aplikacji webowych Pylons. Artykuł opisuje instalację, tworzenie projektów, uruchamianie serwera deweloperskiego oraz prostą aplikację

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,

Comment article