Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [python] porównanie django z symfony
Forum PHP.pl > Inne > Hydepark
kaniagandzowski
Witam

Interesuje mnie temat Python a dokładnie tworzenie aplikacji webowej. Niestety nigdy nie pisałem w tym języku.
Dotychczasowo programowałem w PHP z wykorzystaniem Symfony 1.1. Bardzo mi się podoba pisanie programu w tym frameworku. Ale z wydajnością jest trochę kiepsko. Tak więc interesuję się Django, które jest szybsze od symfony (tak myślę z tego co czytałem). Ale mam kilka pytań:
  • czy django ma możliwość dodawania pluginow tak jak ma symfony. np. dodać plugin do generowania pdf, rss, cms, galerie itd gotowe już komponenty, które bym mógł dodać do frameworka i juz kozystac z gotowych rozwiązań. Jeśli są to gdzie mogę je znaleźć.
  • czy jest możliwość obsługi ajax jak w php za pomocą biblioteki XAJAX, za pomocą której nie muszę pisać ani jednej liniki w JS (http://xajaxproject.org/) albo tak jak ma symfony, które już ma helper, która ułatwia wykorzystanie ajax
  • czy faktycznie django jest szybsze od symfony jesli tak to mniej wiecej o ile razy
  • co powinienem pierw nauczyć sie. Czy uczyć się Pythona 3000 czy moze poprzedniej wersji. (sprawa z dostępnością z gotowymi pluginami, które są kompatybilne z tą wersją Pythona).
    Myślę sobie, że nauczył bym się podstawy Pythona i od razu próbował pisać w Django.
  • Jest możliwość uruchomienia na desktopie (stacji roboczej) aplikacji napisanej dla www z wykorzystaniem Django. Np. w formie programu instalacyjnego, który zainstaluje tą aplikacje webową bez możliwości podejrzenia w kod programu.
Najlepszym było by porównanie symfony i odpowiednik w Python Django.
occulkot
Sam programuje w obu frameworkach wiec mysle ze najlatwiej bedzie mi sie utosunkowac ;)

1. Django nie posiada systemu pluginow - django posiada szereg aplikacji napisanych przez innych uzytkownikow ktore mozemy dolaczyc do swojej aplikacji. Zasada dzialania jest inna niz pluginow w symfony. Dodatkowo mozem posluzyc sie snippetami napisanymi przez innych programistow a udostepnionymi na http://www.djangosnippets.org/
1a. RSS, CMS i wiele innych czesto wykorzystywanych elementow jest czescia frameworka django ;)
2. Django samo w sobie nie wspiera zadnej biblioteki JS. DDeveloperzy daja programista wybor (i slusznie moim zdaniem) co do tego ktory framework zastosuja. Jezeli zas chcesz latwo bez zadnego javascriptu pisac strony - mozesz skorzystac z ktoregos z dostepnych rozwiazan: http://code.djangoproject.com/wiki/AJAX
3. Szybkosc aplikacji zalezy od jej napisania ;) - mozna napisac zarowno szybka aplikacje w symfony jak i wolna w django - wszystko zalezy od indywidualnych zdolnosci programisty ;). Aczkolwiek imo sposob dzialania django pozwala na napisanie szybszych aplikacji niz symfony (ale nie wszczynajmy flame)
4. Python, python i jeszcze raz python. Wersja 3k jest caly czas rozwojowa i wprowadza wiele zmian. Wiekszosc aplikacji pisanych jest pod pythona 2.4+ wiec raczej na tej wersji bym sie skupil. I nie, nie wystarczy poznac pdostaw pythona zeby pisac aplikacje w django. Muisz poznac filozofie pisania aplikacji pythonowych zeby "phpway" nie utrudnial Ci pisania programow.
5. python to jezyk skryptowy - jak chcesz uruchamiac aplikacje bez kodu zrodlowego ;)

Na twoim miejscu raczej skupil bym sie na doskonaleniu symfony i PHP a dopiero pozniej myslal nad przesiadka na inny framework.

OTBTW: czy tylko ja to widze czy coraz wiecej osob probuje pisac aplikacje we frameworkach zamiast jezykach? Coraz wiecej osob lapie sie za frameworki nie znajac podstaw a potem narzeka ze cos tzreba robic naokolo albo cos jest szybsze / wolniejsze... Dziwne to czasy nastaly ;)
empathon
Ja tylko wtrące, że bardzo nie podoba mi biblioteka XAJAX i odradzałbym jej stosowanie. Generuje brzydki inwazyjny kod i moim zdaniem ogranicza tylko możliwości programiście.

Nie wiem czemu niektórzy tak bardzo bronią się przed JS. To bardzo potężny język a dzięki jQuery praca na dokumencie staje się bardzo przyjemna. Dzięki pluginowi jQuery Form podpięcie formularza czy linka pod AJAX jest banalne.
occulkot
Cytat(empathon @ 30.10.2008, 13:15:48 ) *
Nie wiem czemu niektórzy tak bardzo bronią się przed JS. To bardzo potężny język a dzięki jQuery praca na dokumencie staje się bardzo przyjemna. Dzięki pluginowi jQuery Form podpięcie formularza czy linka pod AJAX jest banalne.

sam korzystam z jquery - ale bardziej na zasadzie setupu na strone. Strona musi dzialac bez javascriptu - ale jezeli uzytkownik ma wlaczony wowczas setup odstawia reszte winksmiley.jpg
Cysiaczek
Ja się nauczyłem Prototype z kodu generowanego przez helpery SF laugh.gif
Riklaunim
Ja swego czasu wybrałem Django i nie żałuję smile.gif Zalety to - ekstremalnie prosty w użyciu ORM + Modele (a zarazem funkcjonalne), generowany automatycznie Panel Admina, bardzo dobra dokumentacja, kompaktowa budowa (wszystko jest w Django, nie trzeba sklejać go z n-elementów) itp. Nie podoba mi się tylko trochę obsługa formularzy winksmiley.jpg

Wybierając Django należy liczyć się że to nie jest narzędzie do robienia masowych skrypcików, czy też zleceń dla "prostych" klientów smile.gif A to ze względu na inny sposób hostingu projektów Django od skryptów PHP.

Używając Pythona ma się też tą zaletę iż jest to język wszechstronny i można robić więcej niż tylko web.
qqrq
Cytat(occulkot @ 30.10.2008, 11:04:59 ) *
3. Szybkosc aplikacji zalezy od jej napisania winksmiley.jpg - mozna napisac zarowno szybka aplikacje w symfony jak i wolna w django - wszystko zalezy od indywidualnych zdolnosci programisty winksmiley.jpg. Aczkolwiek imo sposob dzialania django pozwala na napisanie szybszych aplikacji niz symfony (ale nie wszczynajmy flame)


Warto zauważyć, że Python jest de facto szybszy niż PHP.

Poza tym podobno od Django lepszy jest Pylons, aczkolwiek cięższy do nauki.
Riklaunim
Cytat(qqrq @ 30.10.2008, 22:43:30 ) *
Poza tym podobno od Django lepszy jest Pylons, aczkolwiek cięższy do nauki.


Podobno jest szybszy, podobno ma więcej możliwości bo można sobie wybrać ORMa, system szablonów itd, podobno jest thread-safe, podobno to framework dla prawdziwych programistów, a nie dla script-kiddies jak django...

Takie opinie można wypatrzeć na różnych blogach, ale realnie patrząc nie ma żadnej sensownej różnicy wydajności, czy też jakości. Źródłem takich różnych opinii są programiści, którzy na komputerze z 4GB Ram i 2 rdzeniowym procesorem siedzą na prawie gołych Xach z terminalem i monitorem zasobów, żeby przypadkiem nie zamulić systemu o 10 dodatkowych MB RAMu. Osoby lubiące składać sobie frameworka w stylu ZF pewnie polubią bardziej pylons. Osoby chcące przystąpić od razu do działania - Django. Frameworki te mają różne nisze i żaden z nich nie jest od tak lepszy od drugiego. W projektach, nad którymi pracuję Django jest bezkonkurencyjny winksmiley.jpg (ogólnie operowanie na danych, generowanie zestawień HTML/PDF, zarządzanie kolekcjami obiektów przez PA Django itp.)
qqrq
Cytat(Riklaunim @ 30.10.2008, 22:02:20 ) *
Podobno jest szybszy, podobno ma więcej możliwości bo można sobie wybrać ORMa, system szablonów itd, podobno jest thread-safe, podobno to framework dla prawdziwych programistów, a nie dla script-kiddies jak django...


Takie ploty chodzą... winksmiley.jpg
chlebik
Tak zapytam sie praktykow - jak wygladaja zagadnienia hostowania FW Pythona? O ile ZF i Symphony da sie dosc latwo zainstalowac i uzytkowac na wiekszosci hostingow, to jak to jest z Django i Pylonsami?
Riklaunim
Hosting musi mieć w przypadku Apache - mod_python, lub mod_wsgi lub też mod_fcgid. Dla Nginxa - wbudowany moduł FastCGI lub dodatkowy mod_wsgi. Dla Lighttpd - FastCGI lub SCGI, Cherokee - wbudowana obsługa SCGI/FastCGI.

W praktyce musi to byś hosting, gdzie możesz podać własną konfigurację serwera. Na http://www.webfaction.com Dostajesz własnego apache per aplikacja, którego sobie dowolnie konfigurujesz (sprowadza się do podania konfiga dla aplikacji) i odpalasz, a on zacznie współdziałać z głównym apache na serwerze smile.gif Na http://megiteam.pl/ wyklikali dla Nginxa interfejs www, oraz "automatyczną" konfigurację wrzucanych projektów Django/Reszta.
Na Google App Engine http://code.google.com/appengine/ możesz stosować każdy framework pythona zgodny z WSGI (czyli jakieś 99,99% z nich), lecz nie ma tam relacyjnej bazy danych, tylko Datastore, z którym gada się inaczej (przez co wypadają ORMy Django, SQLAlchemy itd.), lecz masz hosting, który raczej darmowych limitów nie przekroczy (chyba że to będzie NK2).

Hosting tego typu projektów pythonowych jest innych niż PHP, gdyż nie jest to wywoływanie poszczególnych plików, tylko wywoływanie obiektu, który na podstawie nadesłanych danych zwraca określoną odpowiedź (np. mapując żądaną ścieżkę na konkretny widok) smile.gif
occulkot
Cytat(Riklaunim @ 31.10.2008, 00:02:20 ) *
Takie opinie można wypatrzeć na różnych blogach, ale realnie patrząc nie ma żadnej sensownej różnicy wydajności, czy też jakości. Źródłem takich różnych opinii są programiści, którzy na komputerze z 4GB Ram i 2 rdzeniowym procesorem siedzą na prawie gołych Xach z terminalem i monitorem zasobów, żeby przypadkiem nie zamulić systemu o 10 dodatkowych MB RAMu. Osoby lubiące składać sobie frameworka w stylu ZF pewnie polubią bardziej pylons. Osoby chcące przystąpić od razu do działania - Django. Frameworki te mają różne nisze i żaden z nich nie jest od tak lepszy od drugiego. W projektach, nad którymi pracuję Django jest bezkonkurencyjny winksmiley.jpg (ogólnie operowanie na danych, generowanie zestawień HTML/PDF, zarządzanie kolekcjami obiektów przez PA Django itp.)

Ja wlasnie nigdy nie mialem czasu bawic sie buzlami w pylonsach - z reszta - nei widzialem tam ejszcze niczego w stylu panelu admina z django - a nie oszukujmy sie - to 30% tworzenia aplikacji
nexis
A znacie więcej ofert hostingowych z Polski, które wspierają Django? Np. na home.pl jest obsługa Python'a. Czy to jednoznaczne z obsługą Django?
NuLL
Aplikacji w Django nie mozna uruchomic na home.pl - m.in dlatego wykupilem ten hosting ostatnio i sie srogo zawiodlem.
bigZbig
Python ma sam w sobie wiele zalet, więc i frameworki napisane w tym języku na tym zyskują. Czy ORM django jest tak ekstremalnie prosty to bym dyskutował (ale ja w ogóle jestem niechętny ORM-om), podobnie rzecz się ma z jakością dokumentacji. Poznanie django wiąże się z wysiłkiem zwłaszcza dla kogoś kto zna Symfony, ale nie ma pojęcia o Pythonie. Nie mniej stoję na stanowisku, że warto.
Riklaunim
Cytat(nexis @ 3.11.2008, 22:28:47 ) *
A znacie więcej ofert hostingowych z Polski, które wspierają Django? Np. na home.pl jest obsługa Python'a. Czy to jednoznaczne z obsługą Django?


Praktycznie każdy z dostępem do shella, gdzie możesz instalować sobie co chcesz lub prawie co chcesz winksmiley.jpg swego czasu też testowałem itl.pl pod tym kątem, gdzie to przechodzi. Ogólnie większość Djangowców poleca WebFaction http://djangofriendly.com/hosts/
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.