Web.py – cz.1
Autor: Michał Powaga
Czym jest web.py
Web.py jest prostym, aczkolwiek użytecznym, frameworkiem pomagającym w tworzeniu aplikacji web w pythonie. Może nie ma tylu możliwości co Django czy Pylons, ale jest bardzo prosty w nauce i pozwala stworzyć chociażby dynamiczną stronę domową.
Być może korzystałeś z serwisu wklej.to który używa web.py. Co prawda nie jest to żaden argument, przemawiający za tym by używać tego frameworka. Z pewnością jednak jest to dobry przykład jego możliwości i zastosowań.
Skąd wziąć web.py
Web.py jest projektem open-source, a można go pobrać z oficjalnej strony. Instalacja jest prosta, wystarczy pobrać archiwum i rozpakować go do odpowiedniego folderu. W tym tutorialu wykorzystam wersję 0.33 (obecnie najnowszą) a to opis jak poprawnie wykonać instalację tej wersji.
http://webpy.org/static/web.py-0.33.tar.gzC:\\Python26\Lib\Aby sprawdzić czy instalacja się udała, wykorzystaj poniższy skrypt:
import web app = web.application((), globals())
Jeżeli skrypt nie ‘sypie’ błędów oznacza to że instalacja się udała.
Jak napisać prostą aplikację
Napiszmy teraz prostą aplikację Hello World!.
Zacznijmy od stworzenia klasy z metodą GET. Metoda ta zostanie wywołana przez web.py w momencie gdy do frameworka trafi odpowiednie żądanie (ang. request).
class Hello(object):
def GET(self):
return 'Hello World!'
Teraz zajmijmy się żądaniami. Być może lepiej je nazwać url-ami lub odnośnikami. Chcemy aby adres nasza.aplikacja/hello/ wywołał metodę GET klasy Hello co w efekcie da jako rezultat tekst „Hello World!”. Stwórzmy krotkę, która będzie jakby mapą dzięki której web.py przekaże żądanie do odpowiedniej klasy.
# żądanie, nazwa klasy urls = ( '/hello/', 'Hello' )
Teraz jesteśmy już bardzo blisko końcowego efektu. Musimy stworzyć obiekt klasy, który będzie m.in. odbierać żądania, przekazywać je do odpowiednich klas i zwracać rezultat działania tejże klasy (ściślej obiektu tej klasy który sam utworzy).
my_app = web.application(urls, globals())
Drugi parametr określa gdzie web.py ma szukać klas. Jeżeli nie są zdefiniowane w globalnej przestrzeni musimy podać jej nazwę.
Teraz pozostało nam ‘wystartować’ naszą aplikację.
my_app.run()
Zbierzmy te poszczególne kawałki kodu i utwórzmy w pełni gotową aplikację.
import web
class Hello(object):
def GET(self):
return 'Hello World!'
urls = ( '/hello/', 'Hello' )
if __name__ == "__main__":
my_app = web.application(urls, globals())
my_app.run()
Uruchamianie i testowanie
Uruchom teraz skrypt który utworzyliśmy. Naszym oczom powinna ukazać się konsola na której wyświetli się adres, np: http://127.0.0.1:8080/. Pod tym adresem znajduje się nasza aplikacja. Nie wyłączaj jeszcze konsoli, inaczej zakończysz pracę aplikacji i nie ujrzysz efektów.
W przeglądarce internetowej wpisz adres, który został wypisany w konsoli. Powinieneś zobaczyć ‘biały ekran’. Teraz dopisz do adresu: hello/. Efektem jest… tak napis Hello World!. To tyle, nasza aplikacja została ukończona.
Zadanie
Tak dla rozrywki, zmodyfikuj skrypt (a w zadzie jego jedną linijkę) tak aby np. taki adres: http://127.0.0.1:8080/ kierował do tej samej klasy co adres: http://127.0.0.1:8080/hello/



(5 głosów, średnia: 4,20 / 5)













