ubuntuusers.de

Webprogrammierung mit Python

Status: Ungelöst | Ubuntu-Version: Ubuntu
Antworten |

Fredo Team-Icon

Avatar von Fredo

Anmeldungsdatum:
27. Juni 2005

Beiträge: 5244

Wohnort: Bochum

Hallo!

Bisher habe ich Webentwicklung mit PHP betrieben. Da ich mittlerweile von Python sehr angetan bin, überlege ich, es nun mal mit Python zu probieren. Für den Anfang geht es nur um ganz einfache Funktionen, die ich möglichst unkompliziert umsetzen will - also eher "Quick&Dirty", auch wenn ich natürlich die Grundlagen der Webprogrammierung mit Python schon mitbekommen will, soweit es meine Zeit zulässt.

Konkret geht es um Dinge wie eine einzelne Seite (vielleicht auch zwei), die eine CSV-Datei auslesen, den Inhalt ausgeben, und vielleicht Formularangaben wieder in die Datei schreiben soll. Von daher erscheinen mir solch großen Frameworks wie Django auch eine Nummer zu groß.

Nun wollte ich mal fragen, wie ich mich dem Thema am besten nährere. Also irgendwie Python in meinen Apachen integrieren (mit mod_python?), ein einfaches Skript laufen lassen, soetwas. Colubrid scheint ja ganz interessant zu sein, aber ich weiß nicht, ob das für meinen Anwendungszweck das passendste ist. Benutzt man gleich eine Template-Engine, wenn man Webseiten in Python schreibt? Irgendwie stelle ich es mir sonst mühsam vor, jede Zeile als write()-Funktion zu schreiben. Tja, da ist man von PHP natürlich verwöhnt (wenn vielleicht auch nicht zum Guten)...

Schon einmal herzlichen Dank für alle Anregungen.

Liebe Grüße
Fredo

Marc_BlackJack_Rintsch Team-Icon

Ehemalige
Avatar von Marc_BlackJack_Rintsch

Anmeldungsdatum:
16. Juni 2006

Beiträge: 4686

Wohnort: Berlin

Colubrid ist schonmal ein guter "minimaler" Einstieg weil Du im Gegensatz zu CGI nicht an die konkrete Anbindung an den Webserver gebunden bist und schon ein bisschen mehr "Service" vom WSGI bekommst.

Template oder nicht: Wenn's wirklich einfach sein soll, dann kannst Du string.Template benutzen. Damit kannst Du "Variablen" aus einem Dictionary in eine Zeichenkette mit Platzhaltern einfügen.

In [16]: import string

In [17]: template = string.Template('$subjekt ist $praedikat.')

In [18]: data = {'subjekt': 'Python', 'praedikat': 'toll'}

In [19]: template.substitute(data)
Out[19]: 'Python ist toll.'

Ansonsten schau Dir doch mal ein paar Template-Module an. Ich persönlich mag kid (XML) und Cheetah (beliebiger Text) am liebsten.

EnTeQuAk Team-Icon

Avatar von EnTeQuAk

Anmeldungsdatum:
17. Mai 2006

Beiträge: 3289

Also ich als "mitanfänger", der bisher nur kleinere Scripte umgesetzt hat und nun eher auch in Richtung Webprogrammierung gehen möchte kann dir nur CherryPy ( http://cherrypy.org ) ans Herz legen. Es ist nicht so klein wie Coulbrid bietet aber in meinen Augen einen "etwas besseren Komfort".

(das ist einzig und allein meine Meinung!)

Ansonsten als Template Engine jinja ( http://wsgiarea.pocoo.org ). Diese Kombo benutze ich. Für SQL Abfragen noch SQLObject aber das geht glaube ich zu weit 😉

Also es ist mitlerweile eine gaaaaanze Menge möglich.
Und vor allem. Python ist so einfach 😉 Es macht einfach spaß mit Python und einem dieser WSGI Handler und oder Frameworks und oder Template Engines zu arbeiten.

mfG EnTeQuAk

Zando

Anmeldungsdatum:
18. August 2005

Beiträge: 313

Wohnort: Dresden

Hallo Fredo,

ich hatte mal so eine ähnliche Frage im Pythonforum gestellt:

http://www.python-forum.de/topic-6483.html

Zudem bin ich mittlerweile der Meinung, dass die wirklich einfachen Sachen auch sehr gut mit CGI zu lösen sind. Also was du meintest mit Datei auslesen und Formulardaten auswerten.

So long
Carsten

Fredo Team-Icon

(Themenstarter)
Avatar von Fredo

Anmeldungsdatum:
27. Juni 2005

Beiträge: 5244

Wohnort: Bochum

Hallo!

Danke schon mal für die Antworten. Jetzt weiß ich schon mal ein bisschen mehr. Es läuft also wohl wahrscheinlich auf Colubrid oder CherryPy hinaus. Kennt jemand beide und kann kurz seine Eindrücke schildern? Bei CherryPy ist mir die Inkompatibilität der Versionen aufgefallen, das finde ich erst einmal irritierend. Ich will ja nicht alle Anwendungen noch einmal umschreiben, nur weil eine neue Version von CherryPy herausgekommen ist...

Was mir jetzt noch eher unklar ist, ist das Serversetup, um eine solche Anwendung laufen zu lassen. Wenn man die Programme mit "python programmname" aufruft, starten beide ja anscheinend einen Testserver auf Port 8080. Aber wie würde es aussehen, wenn eine solche Anwendung einfach von außen erreichbar sein soll - Wo liegen die Dateien, wie richte ich die Kommunikation zwischen Webserver und Python-Programm ein? Wenn möglich würde ich auch gerne einen Apachen laufen lassen, der neben den Python-Programmen auch einfach statische Inhalte ausliefert.

Leider habe ich in den Dokus dazu nichts gefunden. Wie würde das für Colubrid oder CherryPy aussehen? Wie geht es mit einfachem CGI, wie Du das meintest, Zando?

Liebe Grüße
Fredo

Zando

Anmeldungsdatum:
18. August 2005

Beiträge: 313

Wohnort: Dresden

zu CGI:

Also einen besonderen Server braucht man da nicht. Einfach wie sonstige CGI-Sachen auch in den CGI-Ordner packen (meist cgi-bin).
Python sollte natürlich vorhanden sein. Man hat aber halt keine Probleme darüber hinaus noch andere Software installieren zu müssen, was auch zu höheren Kosten führen kann.

Tutorial mit den wichtigsten Grundlagen:
http://webpython.codepoint.net/

Oder, falls du eine Bibliothek in deiner Nähe hast, kann ich dir auch den Abschnitt Internetprogrammierung im Buch "Objektorientierte Programmierung mit Python" empfehlen. Der geht eigentlich nur auf CGI ein, aber ist deutsch, kurz und gut verständlich.

edit: Ich stehe auch nicht so auf Bücher, weil man da erst aus dem Haus gehen muss *g* Aber das hier ist wirklich als Anfang zu empfehlen, weil man danach gleich anfangen kann Python im Web einzusetzen.

noch ein edit: Ich glaube das schwerste Beispiel dort war, dass Daten von einer Wettervorhersageseite ausgelesen, ausgewertet und etwas gewünschtes wiedergegeben wurde (vielleicht hilft das bei der Entscheidung, ob es sich lohnen könnte). Erwähnte ich schon, dass es einfach geschrieben und sogar für mich verständlich war? 😀

So long
Carsten

P.S.: Zu den anderen beiden Sachen kann ich dir leider nichts sagen. Ich habe mal Django getestet, aber das war für meine Ansprüche dann doch zuviel Arbeit. Ist aber besonders nützlich, falls man große Datenmengen verarbeiten muss, da man auch eine leistungsfähigere Datenbank anbinden kann/muss. Alles in allem also gut, falls erstmal alles geschrieben wurde (für eine Seite muss man quasi immer in vier Dateien ändern: models, views, templates, Konfiguration der Pfade). Für kleinere Sachen aber meiner Ansicht nach eindeutig überdimensioniert.

EnTeQuAk Team-Icon

Avatar von EnTeQuAk

Anmeldungsdatum:
17. Mai 2006

Beiträge: 3289

Also um auf CherryPy einzugehen.

Ich benutze es im Moment einmal für ein Projekt namens daucms. ( https://opensvn.csie.org/traccgi/daucms ).

Also es eben genau wie Coulbrid auf Einfachheit eingestellt und stellt, mit Apache & co, eine Zwischenschicht zwischen Apache und Client. (ist vor dem Apache anzuordnen).

Ich kann dir nur sagen... es macht Spaß 😉 Es ist einfach, in der Version 3 einfach sehr gut und mit Inkompatibilitäten hatte ich zwar nicht zu kämpfen aber laut Doku sind die nicht sooooo groß.

MfG EnTeQuAk

Fredo Team-Icon

(Themenstarter)
Avatar von Fredo

Anmeldungsdatum:
27. Juni 2005

Beiträge: 5244

Wohnort: Bochum

Hi EnTeQuAk!

Ja, ich bin auch dabei, mich mit CherryPy anzufreunden. Bei Dapper ist ja die Version 2.0 dabei - lohnt es sich, per Hand auf die Version 3 upzugraden? Das ist noch eine Beta, wenn ich das richtig sehe...

Ansonsten muss ich sagen, dass mit die Art sehr gut gefällt, Webanwendungen als richtiges Programm zu schreiben, das die Struktur der Seite abbildet, anstatt nur Programmcode in HTML einzubetten. Im Augenblick ist es auch nur mal zum Austesten. Als nächstes werde ich mal versuchen, CherryPy hinter dem Apachen in einem Unterverzeichnis laufen zu lassen, im CherryPy-Wiki habe ich eine ganz gute Anleitung gefunden.

Liebe Grüße
Fredo

EnTeQuAk Team-Icon

Avatar von EnTeQuAk

Anmeldungsdatum:
17. Mai 2006

Beiträge: 3289

Also ich setze bereits auf CherryPy3. Ich habe bisher keine direkten Sachen gefunden, die mich störten...

Und ich denke auch wenn man es langfristig einsetzen möchte gleich auf CherryPy3 zu setzen ist die bessere Variante.

ABER

Die Dokus sind noch alle für CP2. Mit ausnahme auf der Hauptseite (cherrypy.org) Aber die auf docs.cherrypy.org sind noch für die "alte" Version.

MfG EnTeQuAk

Antworten |