Pylons - czyli siła Myghty i wygoda RubyonRails

Opublikowane przez Jarosław Zabiełło Fri, 03 Mar 2006 23:51:00 GMT

Coraz bardziej ciekawie rozwija sie pythonowy framework do szybkiego budowania aplikacji internetowych: Pylons. W przeciwieństwie do TurboGears Pylons jest zbudowany na bazie Myghty a nie CherryPy. Myghty jest bardzo szybkim, stabilnym i dobrze napisanym frameworkiem. Pracuje jako cgi, mod_python, wielowątkowo lub wieloforkowo, dzięki WSGI. Posiada doskonały, elastyczny cache, obsługę AJAX’a, słowem prawie wszystko co trzeba dla współczesnej aplikacji internetowej. Jednak posiada za dużo cech które w branży pythonowej określa się jaki “perlish” (Myghty był wzorowany na perlowym Masonie)

I tu z pomocą przychodzi Pylons. Jest on czymś w rodzaju megaframeworku, czyli frameworku zbudowanym na bazie innego frameworku, w tym wypadku: Myghty. (Na podobnej zasadzie TurboGears jest megaframeworkiem opartym na CherryPy).

Pylons różni się jednak tym od TurboGears że jest oparty na frameworku znacznie bardziej solidnym i znacznie lepiej naśladuje framework bedący natchnieniem dla większości innych, czyli Ruby on Rails. Pylons czerpie pełnymi garściami z najlepszych pomysłów Railsów dodając do tego większą wydajność Pythona, elastyczność i prostotę składni oraz siłę jego bibliotek (np. Python ma doskonale zaimplementowaną obsługę Unicode, co jest w Ruby potraktowane trochę po macoszemu, a w PHP to w ogóle tragedia)

Zobaczmy przykładowo, co nam daje Pylons. Np. rozwiązywanie adresów. Adresy URL są rozwiązywane za pomoca bardzo ciekawej biblioteki Routes w sposób podobny do Railsów. Np. załóżmy że bieżący request zwraca następujący słownik: {‘controller’: ‘blog’, ‘action’: ‘view’, ‘id’: 2 (gdzie rozwiązywanie adresów url odbywa się wg definicji podobnej do Railsów: ’:controller/:action/:id’). Uzyskamy następujące wyniki:

url_for(id=4)                    =>  '/blog/view/4',
url_for(controller='/admin')     =>  '/admin',
url_for(controller='admin')      =>  '/admin/index/4'
url_for(action='edit')           =>  '/blog/post/4',
url_for(action='list', id=None)  =>  '/blog/list'

Pylons “przeportował do Pythona” całą masę użytecznych helperów znanych w Rails. Zajmuje się tym biblioteka RailsHelpers. Przykładowo wygląda to tak:

link_to("Delete this page", url(action="destroy", id=4), confirm="Are you sure?")
link_to("Help", url(action="help"), popup=True)
link_to("Busy loop", url(action="busy"), popup=['new_window', 'height=300,width=600'])
link_to("Destroy account", url(action="destroy"), confirm="Are you sure?", post => True)

Jaką to daje nam korzyść? Ogromną! Wyobraźmy sobie że chcemy zmienic sposób rozwiązywania adresów url. Co z milionami stron, które miały linki do różnych wewnętrznych części naszego serwisu? Koszmar! Trzeba ręcznie je poprawiać. Dzięki Pylon, nie musimy bezpośrednio wklepywać adres url, ale używamy do tego helperów. Zmiana zasad rozwiązywania adresów automatycznie poprawi adresy we wszystkich miejscach. Korzyść jest niewymierna!

RailsHelpers zawiera także więcej helperów. Np. można na nie zrzucić budowę formularzy.

Można też uzyskać efekty specjalne połączone z AJAX’em w identyczny sposób jak w Railsach. Pylons bowiem impelmentuje w Pythonie tą samą, znakomitą bibliotekę JavaScript: scriptaculous

Nie sposób nie wspomnieć także o interaktywnym debuggerze. To poprostu jest nowa jakość. Można interaktywnie prześledzić stan obiektów aplikacji internetowej. Świetny pomysł.

Jak dla mnie, Pylons staje się głównym rywalem Django do tytułu najlepszego frameworka dla języka Python. Jest znacznie bardziej elastyczny, posiada wysoką wydajność i możliwości Myghty oraz w łatwiejszy sposób rozwiązuje adresy url i ma wygodniejsze helpery, bo wzorowane na Ruby on Rails. Więcej na temat Pylons można śledzić także na stronie http://groovie.org/

Posted in ,  | Tagi ,  | 2 comments

Comments

  1. Avatar MySZ powiedział about 2 hours later:

    Ja tylko w kwestii formalnej (normalnie się nie czepiam ortów), i dlatego że na newsach też robisz ten jeden błąd: http://sjp.pwn.pl/haslo.php?id=4549

    Poza tym dzięki za info o pylons – muszę się nim zainteresować na poważniej :)

  2. Avatar Alex powiedział 4 months later:

    wszystko to ładne i piękne …

    ale do RoR-a jest coraz więcej książek i wszelakiej dokumentacji

    a do tego typu wynalazków …

    co z tego że coś jest może i lepsze niż RoR – zero pomocy, brak dokumentacji ( np. Nitro … po padzie strony )

    Pozdrawiam

(leave url/email »)

   Pomoc języka formatowania Obejrzyj komentarz