Re: [Python-de] Anfängerfragen

Hallo Andreas, hallo alle On 09/09/2012 09:58 AM, Andreas Jung wrote:
Und was ist die genaue Frage? Wo es Python Dokumentation gibt?
Bedingt. Nicht die gesammelte Python-Dokumentation, sondern a) eine Auswahl Befehle, die ich für mein Projektlein brauchen werde und wo ich die am besten nachschlagen soll b) evtl. Beispiele, die ich ganz oder teilweise übernehmen oder daraus lernen kann. c) sonst noch Hinweise, Best Practices, Geschichten, ... ;-) Hier ist das Projektlein, wieder:
Auf einem LAMP-Server, Debian 6, habe ich das folgende Projektlein vor:
- Besucher können auf ein Webformular paar wenige Parameter eingeben
- Der Server stellt anhand dieser Angaben eine Instanz einer bestimmten LAMP anwendung auf. Der Besucher erhält die Zugangsinfo und andere Adminangaben, z.B. um diese Instanz nach gebrauch zu zerstören
Die Erstellung der LAMP-Instanz ist das Übliche: Kopieren von Quellcode in ein Verzeichnis, erstellen von anderen z.B. tmp-Verzeichnissen, setzen von Rechten, erstellen einer MySQL-Datenbank, eintragen der Werte in die Konfig.Datei, Initialisierung der DB, ...
Diesen Teil kann ich mit Shell-Skripten machen. Aber wegen der Web- anbindung und parametrisierung hat man mir Python empfohlen. Könnt ihr mich auf die nötigen Dokus verweisen?
Gruss Matteo

Und was ist die genaue Frage? Wo es Python Dokumentation gibt?
Bedingt. Nicht die gesammelte Python-Dokumentation, sondern a) eine Auswahl Befehle, die ich für mein Projektlein brauchen werde und wo ich die am besten nachschlagen soll
Du müsstest Dich zunächst auch für ein Web-Framework entscheiden. Wenn es wirklich nur ein Formular ist und sich die Web-Anwendung nichts merken muss, empfehle ich CGI: eine statische Webseite mit einem Formular, das dann das CGI-Skript auslöst. Wenn es vielleicht doch mehr als ein Formular ist und es sich merken muss, welche Nutzer es gibt und welche Instanzen und welcher Nutzer welche Instanz angelegt hat, bräuchtest Du ein Webframework mit Datenbankintegration; ich empfehle Django.
b) evtl. Beispiele, die ich ganz oder teilweise übernehmen oder daraus lernen kann.
Das CGI-Beispiel ist http://wiki.python.org/moin/CgiScripts In dem Skript gibt es zwei Funktionen: verarbeiten der Eingabe, und generieren einer Antwort-HTML-Seite. Das Beispiel konzentriert sich auf den zweiten Teil; mit den POST-Parametern wird ansonsten nichts weiter gemacht. Du kannst die einzelnen Parameter mit form.getvalue abfragen. Für Django ist es am besten, ein Tutorial durchzugehen - angeblich schafft man http://jarv.org/2011/10/django-jquery-tutorial-part1/ in 30 Minuten.
c) sonst noch Hinweise, Best Practices, Geschichten, ... ;-)
Web-Programmierung ist (leider) nichts, was man "mal eben" machen kann. Es geht nur dann schnell, wenn man eine Technologie aus dem Effeff beherrscht. Du solltest Dir also eine spezielle Technologie aussuchen, und die dann eine Zeit benutzen. Du wirst (vielleicht) verschiedene Empfehlungen bekommen, welches Python-Webframework man anstelle von Django auch noch nehmen könnte, sowie auch Empfehlungen, dass man anstelle von Python auch PHP, Ruby oder node.js nehmen könnte. Diese Empfehlungen sind alle richtig; man kann mit all diesen Technologien ziemlich produktiv sein, wenn man sie beherrscht. Die Wahl ist letztlich Deine. Ciao, Martin

Hallo,
Du müsstest Dich zunächst auch für ein Web-Framework entscheiden. Wenn es wirklich nur ein Formular ist und sich die Web-Anwendung nichts merken muss, empfehle ich CGI: eine statische Webseite mit einem Formular, das dann das CGI-Skript auslöst.
<snip/> All das was Martin sagt - mit einer Ausnahme: statt CGI, das sehr rudimentär ist und dazu einlädt, viele Dinge selbst und nicht richtig zu machen (encodings, multipart-form-encoded Daten, Mischung von Code & HTML) würde ich dir zu einem Micro-Framework wie zB bottle raten. http://bottlepy.org/docs/dev/ Hello World in 5 Zeilen mit eigenem Server. Und wenn du auf einem privilegierten Port laufen willst, dann bindest du das ganze mittels mod_wsgi oder proxying an einen Apache. Diez

Am 09.09.2012 um 16:05 schrieb "Diez B. Roggisch" <deets@web.de>:
All das was Martin sagt - mit einer Ausnahme: statt CGI, das sehr rudimentär ist und dazu einlädt, viele Dinge selbst und nicht richtig zu machen (encodings, multipart-form-encoded Daten, Mischung von Code & HTML) würde ich dir zu einem Micro-Framework wie zB bottle raten.
Ditto, aber mit Flask statt Bottle, das ich nicht kenne: http://flask.pocoo.org/docs/quickstart/ Flask schätze ih immer mehr. Hello World (auf der Seite oben) in sieben Zeilen, aber wer wird denn kleinlich sein? ;-) Gruß, Dinu

Zitat von Dinu Gherman <gherman@darwin.in-berlin.de>:
Ditto, aber mit Flask statt Bottle, das ich nicht kenne:
http://flask.pocoo.org/docs/quickstart/
Flask schätze ih immer mehr. Hello World (auf der Seite oben) in sieben Zeilen, aber wer wird denn kleinlich sein? ;-)
Das Problem mit diesen Frameworks ist: wie hostet man sie denn? In der Apache-Dokumentation ist ausführlich erklärt, wie man CGI einbindet; wie man eine Flask-Anwendung in Apache einbindet, steht auf der Flask-Seite aber nicht (und auch nicht in der Apache-Dokumentation). Statt dessen wird einem erklärt, dass man Flask auf Heroku oder AppEngine hostet - das will der OP aber sicher nicht. Ich finde das WSGI-Zeug für den Normalanwender viel zu kompliziert. Schon dass man i.d.R. irgendwas neu starten muss, nachdem man das Skript geändert hat, ist eigentlich nicht ok. Und wenn es seinen eigenen Webserver mitbringt: wie macht man es reboot-fest? Ciao, Martin

On Sep 9, 2012, at 9:41 PM, martin@v.loewis.de wrote:
Zitat von Dinu Gherman <gherman@darwin.in-berlin.de>:
Ditto, aber mit Flask statt Bottle, das ich nicht kenne:
http://flask.pocoo.org/docs/quickstart/
Flask schätze ih immer mehr. Hello World (auf der Seite oben) in sieben Zeilen, aber wer wird denn kleinlich sein? ;-)
Das Problem mit diesen Frameworks ist: wie hostet man sie denn? In der Apache-Dokumentation ist ausführlich erklärt, wie man CGI einbindet; wie man eine Flask-Anwendung in Apache einbindet, steht auf der Flask-Seite aber nicht (und auch nicht in der Apache-Dokumentation). Statt dessen wird einem erklärt, dass man Flask auf Heroku oder AppEngine hostet - das will der OP aber sicher nicht.
Ich finde das WSGI-Zeug für den Normalanwender viel zu kompliziert. Schon dass man i.d.R. irgendwas neu starten muss, nachdem man das Skript geändert hat, ist eigentlich nicht ok. Und wenn es seinen eigenen Webserver mitbringt: wie macht man es reboot-fest?
Fuer Flask kann ich nicht sprechen. Bei bottle muss nur bottle.py daneben liegen damit's importiert werden kann - und ansonsten wird halt mod_wsgi benutzt. Das ist ausreichend dokumentiert, und auch sowas wie neustarten ist nicht notwendig, wenn man einen WSGIDaemon-Prozess benutzt. Diez
participants (4)
-
Diez B. Roggisch
-
Dinu Gherman
-
martin@v.loewis.de
-
Matteo Grämlin