2009-08-21 7 views
11

Zastanawiam się nad przejściem z PHP na Python dla aplikacji internetowych, ale zastanawiałem się, czy Python jest tak dobry, jak tkanie w HTML-ie i PHP. Zasadniczo jest mi bardzo łatwo/intuicyjnie korzystać z <? and ?>, aby umieścić PHP tam, gdzie chcę, a następnie mam swobodę aranżowania/organizowania mojego kodu HTML, tak jak chcę. Czy jest to równie łatwe w przypadku Pythona? Zasadniczo pytanie brzmi: czy praca z HTML z Pythonem jest podobna do pracy z HTML z PHP pod względem łatwości użycia?Jak ładnie Python "płynie" z HTML w porównaniu do PHP?

Edit: Chyba pomóc wyjaśnić niektóre z zamieszania w komentarzach poniżej, mam intuicję, że PHP byłby lepszy niż Python przy organizowaniu czołowy, prezentacja część strony internetowej, podczas gdy Python będzie excel w części tylnej (rzeczywiste programowanie ...). Pytanie brzmi - czy jestem w błędzie i czy Python jest równie dobry jak PHP dla front-end?

Edycja mojej edycji: Ach, zaczynam rozumieć błąd moich sposobów; wygląda na to, że nieświadomie złapałem jakieś złe nawyki. Zawsze myślałem, że to było w porządku (czytaj: standard), na przykład, mieć PHP w pseudo-kodzie wykonaj następujące czynności:

If user has filled out form: 
    print this html 
else: 
    print this html 

Kiedy w rzeczywistości należy użyć szablonu HTML z PHP w SEP. plik. I w tym scenariuszu, PHP i Python są na równym polu walki i prawdopodobnie zależy to od moich własnych preferencji językowych.

+2

re: Edycja edycji. To bardzo honorowe i odświeżające, że jesteś gotowy zobaczyć, że niektóre z przyzwyczajeń, których uczysz się przy rozpoczęciu programowania, nie zawsze są skalowalne/mają taką samą wartość, jak projekty stają się większe :) –

Odpowiedz

24

Nie można łatwo porównać PHP i Python.

PHP to framework przetwarzania WWW zaprojektowany specjalnie jako wtyczka Apache. Obejmuje obsługę protokołu HTTP oraz język programowania.

Python jest "tylko" językiem programowania. Istnieje wiele frameworków internetowych Pythona do podłączania Pythona do Apache. Jest mod_wsgi, CGI, a także szkielety aplikacji internetowych o różnym stopniu zaawansowania.

"Używanie PHP w miejscu, w którym chcę" nie jest właściwym sposobem oceny Pythona jako języka do tworzenia aplikacji internetowych.

Struktura (taka jak Pylons, Django, TurboGears itp.) Oddziela prezentację (szablony HTML) od programowania od dostępu do bazy danych. PHP łączy wszystkie trzy aspekty aplikacji internetowej w jedną rzecz - język PHP.

Jeśli chcesz przełączyć się z PHP na Python, musisz wykonać następujące czynności.

  1. Zacznij bez żadnego uprzedzenia, bez uprzedzeń, niczego.

  2. Zacznij od nowa, korzystając z samouczka dotyczącego wybranego przez Ciebie środowiska. Wykonaj cały samouczek, nie porównując niczego, co robisz z PHP.

  3. Zacznij od nowa, rozwiązując wybrany problem za pomocą wybranej przez siebie architektury. Zbuduj całą sprawę bez porównywania wszystkiego, co robisz z PHP.

Po coś zbudowany przy użyciu Pythona oparte internetowej ramy - bez porównywania czegokolwiek do PHP - można cofnąć i porównać i te dwie rzeczy.

Ludzie, którzy zadają pytania takie jak Python - substr, java and python equivalent of php's foreach($array as $key => $value), what is python equivalent to PHP $_SERVER? czasami próbują odwzorować swoją wiedzę PHP na język Python. Nie rób tego.

Jedynym sposobem na rozpoczęcie korzystania z frameworka sieci Python jest rozpoczęcie od nowa.


Edytuj

Wszystko Python web ramy mają pewne "Logika" prezentacja możliwości w ich silników szablonów. Jest to "śliskie zbocze", w którym można łatwo zmienić prosty szablon w bałagan.Oczywiście, prosty konstrukt {% if %} i {% for %} jest pomocny w upraszczaniu warunkowych i powtarzających się elementów szablonu HTML.

Poza tym zaczyna się mętnieje, jak wiele energii należy włożyć do języka znaczników.

Na jednym krańcu mamy PHP/JSP i powiązane technologie, w których silnik szablonów może (i często robi) wszystko. To zamienia się w bałagan. Czy środek jest Jinja i Mako, gdzie silnik szablonów może zrobić wiele. Na drugim końcu jest Django, w którym silnik szablonów robi tak mało, jak to tylko możliwe, aby uniknąć mieszania prezentacji i logiki przetwarzania.

+0

@ S.Lott: Fenomenalna odpowiedź. Całkowicie się zgadzam. Domyślam się, że nadal staram się wyjaśnić (i być może nie będzie, dopóki nie spróbuję, jak mówisz) jest komentarzem zrobionym przez bobinię powyżej: czasami jest logika prezentacji i ma sens używanie PHP bezpośrednio z HTML. Domyślam się, że moje pytanie brzmi - w Python web frameworks, czy Python może być użyty tak łatwo w logice prezentacji w tym sensie, czy też jest znowu fundamentalna różnica między PHP i Python, która pozwala Pythonowi osiągnąć te same cele prezentacji, ale w zupełnie inny sposób ? – sepiroth

+0

@hatorade: Istnieją różne podejścia do szablonów, które najlepiej zależą od konkretnych potrzeb. Myślę, że najbardziej podobną do czystej templatacji PHP jest biblioteka szablonów Mako. Ma język szablonów, który ponownie wykorzystuje język Python dla programowej części języka, dzięki czemu jest naprawdę potężny i łatwy do opanowania, jeśli znasz już Python. –

2

Dobrze. Przede wszystkim musisz wiedzieć, że mieszanie kodu z prezentacją jest uważane za złą praktykę. Chociaż można używać silników szablonów, które umożliwiają miksowanie dowolnego kodu Pythona w html, np. Mako, zazwyczaj biblioteki i frameworki Pythona mają tendencję do faworyzowania logiki pisania w pliku skryptowym Pythona i osobnego szablonu html do renderowania wyników.

Powiedziawszy to, python jest znacznie łatwiejszy niż PHP.

Ale możesz być produktywny tylko w pythonie Jeśli chcesz poznać sposób programowania.

Jeśli chcesz PHP, nic nie jest bardziej PHP niż samego PHP, a python przyjmuje różne podejścia, więc może będziesz sfrustrowany, ponieważ rzeczy nie są do siebie podobne.

Jednakże, jeśli szukasz nowego, lepszego sposobu robienia rzeczy, python jest dla Ciebie.

Po przeczytaniu basic python tutorial, spróbuj jakiegoś framework sieci Pythona, takiego jak pylons i przekonaj się sam.

+1

@nosklo: czy możesz rozwinąć to, co masz na myśli? "Mising kod z prezentacją?" Po prostu chodziło o umieszczenie jakiegoś PHP, a następnie umieszczenie w nim HTML bez żadnych ograniczeń, tak, że PHP i HTML były poprawnie ustawione. Jednak w Pythonie zastanawiałem się, czy nie będę musiał ustawić zakładki HTML, aby pasowały do ​​standardów w zakładce Python. Ale jest interesujące, że Python i HTML są generalnie podzielone na różne pliki. Nie wiedziałem tego; zgaduję, że powinienem przeczytać trochę więcej. – sepiroth

+0

Mieszanie prezentacji z logiką domeny jest złą praktyką. Ale jeśli nie tworzysz danych pochodzących z domeny, na czym polega rozpoczęcie używania dynamicznego języka? Myślę, że pytał, jak łatwo i naturalnie jest wyprowadzać dane z Pythona na stronie widoku HTML. –

+1

Zamiast pisać pojedynczy plik, wystarczy napisać kod, który izoluje logikę biznesową od danych wejściowych i prezentacji, umożliwiając niezależny rozwój, testowanie i konserwację każdego z nich. Kod, który coś robi, znajduje się w pliku Pythona. HTML ma tylko kilka symboli zastępczych dla pokazywania wyników i prostych struktur, takich jak 'for's do renderowania wielu elementów. – nosklo

0

Tak, PHP jest łatwe w użyciu w ten sposób. Ale to nie jest zalecany sposób! Lepiej korzystaj z szablonów. W rzeczywistości możesz użyć tego samego w PHP.

1

Przede wszystkim: Ucieczka do języka programowania z HTML jest dobra, gdy robisz małe hacki. W przypadku rzeczywistej aplikacji internetowej do produkcji nigdy bym tego nie zrobił.

Mieszanie kodu HTML z językiem programowania jest niepraktyczne. Lepiej używać jakiegoś języka szablonowego. Wcięcie nie jest problemem w Pythonie bardziej niż w jakimkolwiek innym języku.

Ale, aby odpowiedzieć na twoje aktualne pytanie: To jest to samo. Są też języki programowania Pythona, które pozwalają na ucieczkę do Pythona, jeśli chcesz. Wolałbym polecić, żebyś tego nie robił, ale możesz.

2

Gdybyśmy przeszli na stronę internetową MVC, okazałoby się, że zarówno PHP, jak i Python używają HTML w podobny sposób.

Praca wokół żądania odbywa się w kontrolerach, przy użyciu modelu do pobierania danych. Wyniki są następnie publikowane w widoku, który jest w rzeczywistości szablonem HTML.

Możesz mieć dobrze rozplanowany plik HTML jako widok, a kontroler po prostu powie mu, co zapełnić.

W PHP jest to często wykonywane przy pomocy alternative PHP syntax.

Powiązane problemy