Verwenden von Python zum Erstellen von Webanwendungen

8

Dies ist ein Follow-up zu zwei questions Ich fragte eine Woche oder so zurück. Das Ergebnis davon war, dass ich einen Prototyp einer AI-basierten Anwendung für das Web erstellte, und ich fragte mich, welche Sprache (n) verwendet werden sollte. Die Schlussfolgerung schien zu sein, dass ich für etwas wie Python gehen und dann irgendwelche kritischen Bits in etwas schnelleres wie Java oder C / C ++ umwandeln sollte.

Das klingt gut für mich, aber ich frage mich jetzt, ob Python wirklich die richtige Sprache ist, um eine Webanwendung zu erstellen. Die meisten Web-Anwendungen, an denen ich in der Vergangenheit gearbeitet habe, waren C / C ++ CGI und dann php. Der PHP-Code, mit dem ich viel leichter arbeiten konnte, machte die Verknüpfung der Benutzeroberfläche mit dem Backend so viel einfacher und auch für mich logischer.

Ich habe Python vorher nicht benutzt, aber was ich mich im Grunde wundere ist, wie einfach CGI-Programmierung in Python ist? Muss ich auf die langweilige Art und Weise, in C / C ++ HTML-Code in Templates zu speichern, zurückkehren und das CGI einlesen lassen und spezielle Codes durch entsprechende Werte ersetzen oder ist es möglich, die Templates sei der Code wie bei PHP?

Ich stelle hier wahrscheinlich eine zutiefst ignorante Frage, für die ich mich entschuldige, aber hoffentlich wird jemand wissen, worauf ich hinaus will! Meine allgemeine Frage ist: Ist das Schreiben von Web-Anwendungen in Python eine gute Idee, und ist es so einfach wie mit PHP?

    
Ben 14.11.2008, 15:38
quelle

4 Antworten

8

"Wie einfach ist CGI-Programmierung in Python?" Einfacher als C, das ist sicher. Python ist einfacher, weil - einfach - es einfacher ist, mit C zu arbeiten als in C. In erster Linie: keine Speicherzuweisung - Freigabe. Darüber hinaus ist das OO-Programmiermodell ausgezeichnet.

Abgesehen von der Einfachheit der wesentlichen Sprache ist der Python-WSGI-Standard viel einfacher zu handhaben als der CGI-Standard.

TurboGears , CherryPy , Django , was auch immer.)

Die Frameworks erfordern eine Menge (notwendige) Struktur. Die Erfahrung für einen CGI-Programmierer ist, dass es zu viel zu lernen ist. Wahr. Alle neuen Dinge sind zu viel um zu lernen. Der Wert übersteigt jedoch die Investition bei weitem.

Mit Django bist du in wenigen Minuten einsatzbereit. Ernst. django-admin.py startproject und Sie haben etwas, das Sie fast sofort ausführen können. Sie müssen Ihre URLs entwerfen, Ansichtsfunktionen schreiben und Seitenvorlagen entwerfen. All das ist Arbeit. Aber es ist weniger Arbeit als CGI in C.

Django hat eine bessere Architektur als PHP, da die Präsentationsvorlagen vollständig von der Verarbeitung getrennt sind. Dies führt zu einiger Verwirrung (siehe Syntaxfehler wann immer Ich verwende Python-Code in einer Django-Vorlage ), wenn Sie den freien und unbeschränkten PHP-Stil im Django-Framework verwenden möchten.

Verknüpfen der Benutzeroberfläche mit dem Back-End

Das Python-Frontend (zum Beispiel Django) verwendet Python-View-Funktionen. Diese Ansichtsfunktionen können beliebigen Python-Code enthalten. Dazu gehören, wenn nötig, Module, die in C geschrieben und von Python aufgerufen werden können.

Das bedeutet, dass Sie ein CLIPS -Modul mit einer Python-freundlichen Oberfläche kompilieren können. Es wird etwas verfügbar für Ihren Python-Code mit der import -Anweisung.

Manchmal ist dies jedoch ineffektiv, da Ihre Django-Seiten darauf warten, dass die CLIPS-Engine beendet wird. Eine Alternative ist, etwas wie eine Named Pipe zu verwenden.

Sie haben Ihre CLIPS-basierte App, die vollständig in C geschrieben ist und von einer Named Pipe liest. Ihre Django-Anwendung, die vollständig in Python geschrieben ist, schreibt in diese Named Pipe. Da Sie zwei unabhängige Prozesse haben, können Sie alle Ihre Kerne ziemlich schnell auf diese Weise auslasten.

    
S.Lott 14.11.2008, 16:28
quelle
17

Python ist eine gute Wahl.

Ich würde allerdings das CGI-Modell vermeiden - Sie zahlen eine große Strafe für den Start des Interpreters bei jeder Anfrage. Die meisten Python-Web-Frameworks unterstützen den WSGI-Standard und können auf unzählige Arten mit Servern verbunden werden, aber die meisten leben in irgendeiner Form des laufenden Prozesses, mit dem der Webserver kommuniziert (über Proxy, FastCGI, SCGI usw.).

Apropos Rahmen: Die Python-Landschaft ist reif für sie. Das ist gut und schlecht. Es gibt viele gute Optionen, aber es kann für einen Neuling entmutigend sein.

Wenn Sie nach etwas suchen, das mit Web / DB / Templatintegration ausgeliefert wird, würde ich vorschlagen, Django , CherryPy , Colubrid oder web.py .

Ob es so einfach wie PHP ist oder nicht, das ist subjektiv. In der Regel wird es empfohlen, Ihre Vorlagen und Anwendungslogik in der Python-Webprogrammierungswelt getrennt zu halten, was Ihr Leben erleichtern kann. Auf der anderen Seite ist es eine andere Definition von "einfach", den gesamten Code für eine Seite in eine PHP-Datei schreiben zu können.

Viel Glück.

    
dowski 14.11.2008 15:59
quelle
5

Ich würde vorschlagen Django , aber vorausgesetzt, dass Sie nach etwas fragen "so einfach wie es ist mit php" Python Server Pages ) ansehen. Während Django ein komplettes Framework für die Erstellung von Websites ist, kann PSP genauso wie PHP ohne jegliches Framework verwendet werden.

    
David Arcos 14.11.2008 16:08
quelle
3

Es ist einfacher, Web-Anwendungen in Python zu schreiben als in PHP. Vor allem, weil Python keine gebrochene Sprache ist.

Nimm ein Web-Framework auf, das mod_wsgi unterstützt oder dein eigenes ausbildet. WSGI-Apps sind wirklich einfach zu implementieren, nachdem Sie davon abgehalten wurden.

Wenn Sie Vorlagen wollen, dann ist genshi die beste Templating-Engine, die ich für Python gefunden habe, und Sie können sie verwenden, wie Sie wollen.

    
Cheery 14.11.2008 16:17
quelle

Tags und Links