Python und Webprogrammierung [neuling]

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
banthrass
User
Beiträge: 14
Registriert: Mittwoch 1. Februar 2006, 13:48

Guten Tag zusammen.

Wie die Überschrift schon sagt gehts hier um dei Webprogrammierung mit phyton. Bisher habe ich Internetseiten mit HTML/PHP gemacht. Nun habe ich eine private Seite für mich entworfen und der HTML Grundbaustein (für die statischen Inhalte) ist schon fertig. Eigentlich dachte ich mir PHP sei der richtige Weg um den Dynamischen Teil (Adminpanel, Newsscript etc) einzubinden durch eine Verkettung von ca 20 Links bin ich bei Python gelandet. Laut verschiedener Seiten und Personen soll Python leicht, effizient und sehr mäctig sein. Naja da denk ich mir "warum PHP wenn ich python was neues lernen kann, was den selben effekt hat.

Tja ich habe hier im Forum logischerweise nach einträgen zu HTML, webprogrammierung und so gesucht. Da google mein Freund ist habe ich auch ihn gefragt. Nach dem ich über Seiten wie drweb.de etc gefolgen bin dachte ich mir ich poste lieber mal hier. scheint mir effizienter zus ein als stunden lang zu suchen.

Ich hab bisher ein grundlegendes Verständnissproblem bei python. Kann mir jemand sagen wie ich python in HTML einbinden kann? Wie könnte ich z.B. einen Adminpanel für meine seite realisieren? Gibt es eine ähnliche inculde funktion wie in PHP? Kann ich python ganz nomal in einem texteditor einfügen, die page hochladen und es läuft oder ist das ein spezielles Format gefragt? Wenn ja wie binde ich dieses Format oder diese Datein ein? Es wäre nett wenn mir jemand die grundlegen dinge zur Python Webprogrammierung mal erläutern könnte. also wie genau baue ich einfach eine HTML seite wo z.B. "Hallo Welt" drin steht. Wie und Wo muss ich speichern, welche Einstellungen sind beim Apache (xampp) nötig. Muss ich was bei dem arbeiten von Linux und Win etwas beachten (zuhause Linux auf der arbeit win2k)?

Ich weis das hier die Frage mit Apache schon öfter gestellt wurde, jedoch erkenne ich in diesen Psots keine Lösung.

Danke im vorraus.

Mfg banthrass
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
banthrass
User
Beiträge: 14
Registriert: Mittwoch 1. Februar 2006, 13:48

mmmm naja nicht so ganz was ich mir erhofft hatte aber ich denke im Grunde ist es nun klar. Wie schaut das nun mit Includes aus? gibt es sowas in python? auf eine soclhe funktion will ich ungern verzichten. Ich habe eine Index .php entworfen in der meine Siete durch includes zusammen gahlten wird. kann ich sowas auch mit python machen? da es schon ganz nützlich ist nur teile einer oage neu zuladen und nicht immer alles.

ein beispiel hier :

Code: Alles auswählen

<?php
//set_include_path&#40;"."&#41;;
$page = "./";
$Title;

switch &#40;$_GET['p']&#41;
&#123;

    case 1:
        include &#40;$page.'html_head.php'&#41;;
        include &#40;$page.'html_table_head.php'&#41;;
          include &#40;$page.'table_head.php'&#41;;
          include &#40;$page.'header.php'&#41;;
          include &#40;$page.'menu.php'&#41;;
        include &#40;$page.'body_main.php'&#41;;
          include &#40;$page.'table_foot.php'&#41;;
          include &#40;$page.'html_table_foot.php'&#41;;
          include &#40;$page.'html_foot.php'&#41;;

    break;

    case 2:
        include &#40;$page.'html_head.php'&#41;;
        include &#40;$page.'html_table_head.php'&#41;;
          include &#40;$page.'table_head.php'&#41;;
          include &#40;$page.'header.php'&#41;;
          include &#40;$page.'menu.php'&#41;;
        include &#40;$page.'adminpanel.php'&#41;;
          include &#40;$page.'table_foot.php'&#41;;
          include &#40;$page.'html_table_foot.php'&#41;;
          include &#40;$page.'html_foot.php'&#41;;

    break;
&#125; 
usw.

kann ich sowas mit python irgendwie machen?

Wenn ich z.B. mitten im HTML eine kurze berechnung machen will, mach ich das mit php mitten im HTML code mit <?php meinen schnick schnack ?> . Habe ich diese einfachheit auch mit python oder muss ich dann alles irgendwie in eine cgi packen und diese extra aufrufen? Wäre ja recht unsinnig
banthrass
User
Beiträge: 14
Registriert: Mittwoch 1. Februar 2006, 13:48

Naja ich hab mir webspace + domain bei all-inkl. de geholt. da kann ich CGIs verwenden. _Nur was ist mit so sachen wie spyce? kann ich das da einfach nutzen? wahrscheinlich nicht odeR?
jgollers
User
Beiträge: 42
Registriert: Freitag 29. November 2002, 12:23
Wohnort: Kirchlengern

banthrass hat geschrieben:Naja ich hab mir webspace + domain bei all-inkl. de geholt. da kann ich CGIs verwenden. _Nur was ist mit so sachen wie spyce? kann ich das da einfach nutzen? wahrscheinlich nicht odeR?
Hallo!

Bietet all-inkl.de denn überhaupt Python an??? Auf der Homepage des Hosters finde ich nur den Begriff CGI in Verbindung mit Perl!!!

Jörg Gollers
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Und nochmal eine kleine Colubrid Werbung: http://wsgiarea.pocoo.org/colubrid/ :wink:

Und natürlich den Wikieintrag [wiki]Python im Web[/wiki]
TUFKAB – the user formerly known as blackbird
modelnine
User
Beiträge: 670
Registriert: Sonntag 15. Januar 2006, 18:42
Wohnort: Celle
Kontaktdaten:

banthrass, die Abomination von PHP-Code die Du oben gepostet hast kannst Du in der Form nur machen wenn Du eben genannte Python-Server-Pages benutzt. Python ist nicht nur dazu gedacht um (X)HTML auszuspucken, oder ganz allgemein als Templating-Sprache für Text-zentrische-Dokumente, sondern als Programmiersprache.

Ich kann ehrlich gesagt nur von Python-Server-Pages abraten, denn das Mischen von Präsentation und Logik führt über kurz oder lang immer nur zu einem Chaos, und würde Dir raten, Dir eine von den vielen Templating-Systemen anzugucken die es da draußen für Python gibt. Im Wiki findest Du mehr Informationen.

--- Heiko.
Mad-Marty
User
Beiträge: 317
Registriert: Mittwoch 18. Januar 2006, 19:46

Schau dir Zope an.

Aber ich würde auch sagen, das du vermutlich nicht die bequeme einbettungseigenschaften wie bei <php> haben wirst.

Das ganze kannst du dir denke ich, vorstellen wie mit perl/mod_perl.

Und wie modelnine schon sagte, Python ist stärker für echte programmierung ausgelegt als nur html bearbeitung (was nicht heisst das es nicht geht).

Ich hab vorher Perl gemacht, und möchte an dieser stelle auch gleich mal davon abraten ...

Und auch Heikos Meinung zum Einbetten unterstütze ich, wir selbst haben das auch gemacht am anfang, nach ca 30 seiten ist schluss - du findest einfach nichts mehr ordentlich.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Mad-Marty hat geschrieben:Schau dir Zope an.

Aber ich würde auch sagen, das du vermutlich nicht die bequeme einbettungseigenschaften wie bei <php> haben wirst.
Hi!

Bei Zope ist die Möglichkeit, andere Dateien einzubetten sogar noch um einiges flexibler als bei PHP.

Durch die "Acquisition" in Zope sucht Zope zuerst die einzubettende Datei im aktuellen Ordner. Wird die Datei da nicht gefunden, dann wird Ordner für Ordner nach oben gewandert um dort nach der einzubettenden Datei zu suchen.

So kann man auf extrem einfache Weise eine Hauptvorlage definieren, die immer aufgerufen wird. Je nachdem in welchem Ordner man sich befindet, wird aber ein Teil der Seite durch die Datei im aktuellen Ordner ersetzt.

So ist es auch möglich, in themenbezogenen Ordnern CSS-Dateien abzulegen, die die Seite je nach Ordner anders einfärbt. Lege ich eine Vorlage für den "Header" in einen Unterordner, dann wird in diesem Ordner automatisch dieser "Header" verwendet. Befindet sich im Ordner kein "Header", dann wird der "Header" der übergeordneten Ordner verwendet.

Code: Alles auswählen

ROOT
 |-styles.css
 |-index.html
 |-hauptvorlage.html
 |-header.html
 |-footer.html
 |
 |-TIERE
 |  |-styles.css
 |  |-index.html
 |  |
 |  |-ELEFANTEN
 |     |-index.html
 |     |
 |     |-ELFENBEIN
 |        |-index.html
 |        |-header.html
 |
 |-MENSCHEN
    |-styles.css
    |-index.html
Dieses, in meinen Augen, einfache System, das man bei Zope "Acquisition" nennt, macht es möglich.

Diese TAL-Anweisung ersetzt in einer Vorlage das SPAN-Tag durch den gerenderten Inhalt der Datei "header.html":

Code: Alles auswählen

<span tal:replace="structure context/header.html" />
Und diese METAL-Anweisung ersetzt in einer Vorlage das SPAN-Tag durch den ungerenderten Inhalt des Makros "main", das in der Datei "header.html" gesucht wird.

Code: Alles auswählen

<span metal:use-macro="context/header.html/macros/main" />
Eine gute Vorlagensprache und die ausgeklügelte Acquisition -- das macht Zope aus.

Die Vorlagensprache TAL gibt es auch ohne Zope. SimpleTAL ist hier zu finden: http://www.owlfish.com/software/simpleTAL/

Zope installieren
http://zope.de/

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Hi!

Noch etwas zu diesem Thema:

So sehr ich Zope schätze -- für manche unverbesserliche "Code in Vorlage"-Schreiber, besonders aus dem Bereich PHP oder ASP, ist Zope viel zu durchdacht.

Für jemanden der so etwas wie PHP/ASP mit Python haben möchte, ist evt. Python Servlet Engine das Richtige.

Hier findet man auch eine kleine PSE Einführung.

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
N317V
User
Beiträge: 504
Registriert: Freitag 8. April 2005, 13:23
Wohnort: München

gerold hat geschrieben:für manche unverbesserliche "Code in Vorlage"-Schreiber, besonders aus dem Bereich PHP
Ganz ehrlich: in PHP geht das zwar so, das heißt aber noch lange nicht, dass es *nur* so geht, geschweige denn, dass es eine gute Idee ist so zu arbeiten.
Es gibt für alles eine rationale Erklärung.
Außerdem gibt es eine irrationale.

Wie man Fragen richtig stellt
modelnine
User
Beiträge: 670
Registriert: Sonntag 15. Januar 2006, 18:42
Wohnort: Celle
Kontaktdaten:

Ganz ehrlich: in PHP geht das zwar so, das heißt aber noch lange nicht, dass es *nur* so geht, geschweige denn, dass es eine gute Idee ist so zu arbeiten.
Du wärest der erste der
  • 1. In PHP anders arbeiten kann,
    2. und es auch tut.
--- Heiko.
N317V
User
Beiträge: 504
Registriert: Freitag 8. April 2005, 13:23
Wohnort: München

modelnine hat geschrieben:Du wärest der erste der
  • 1. In PHP anders arbeiten kann,
    2. und es auch tut.
Juhuu! Erster! :lol: Gleich in zwei Kategorien!
Es gibt für alles eine rationale Erklärung.
Außerdem gibt es eine irrationale.

Wie man Fragen richtig stellt
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

N317V hat geschrieben:Juhuu! Erster! :lol: Gleich in zwei Kategorien!
Glückwunsch! :mrgreen:

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

gerold hat geschrieben:Für jemanden der so etwas wie PHP/ASP mit Python haben möchte, ist evt. Python Servlet Engine das Richtige.
Für PHP-likeness würde ich ganz klar Spyce empfehlen.. vielleicht noch Karigell.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
N317V
User
Beiträge: 504
Registriert: Freitag 8. April 2005, 13:23
Wohnort: München

Also ich muss aber sagen, dass ich vor Webprogrammierung mit Python auch noch etwas zurückschrecke. Das geht wohl nicht nur mir so, wenn man mal guckt, dass z.B. sogar dieses Forum mit PHP läuft. Es gibt da wohl eine lange Reihe an Möglichkeiten; viele Schlagworte wie mod_python, ZOPE, WSGI etc. sind hier ja schon gefallen. Nur: meist erscheint das alles ziemlich kompliziert aufzusetzten und ist teilweise vollkommener Overkill, oft auch einfach schlecht dokumentiert. Das PEP zu WSGI ist zum Beispiel recht informativ, aber ich kann immernoch nicht wirklich sagen, was ich tun muss, um es zu nutzen. Es scheint wohl nicht automatisch bei Python dabei zu sein und ist dementsprechend auch in der Python-Doku nicht zu finden (Version 2.4). Bis ich die ZOPE-Doku auch nur annähernd durchgearbeitet hab, hätte ich das bisschen, das ich brauche schon längst "zu Fuß" programmiert. Für größere Projekte sicher geil, aber für den Einstieg einfach viel zu gewaltig. Um das gleich vorweg zu nehmen: auch das ZOPE-Tutorial ist bei mir schon bei der Installation durchgefallen, weil viel zu viele Dinge einfach nicht so funktionieren, wie dort beschrieben und ich dafür dann wieder jede Menge anderer Doku durchforsten muss um das Ding überhaupt mal anständig auf die Platte zu kriegen. Das sind jetzt nur zwei Beispiele, aber ich hab mich noch mit mod_python, Twisted, Colubrid, Plone und CherryPy beschäftigt. Die Probleme scheinen mir über gleich: entweder zu überladen oder zu unausgereift oder einfach mangelhaft dokumentiert. Sich da einen Überblick zu verschaffen ist schon reichlich mühselig, aber ich werd wohl die Liste auf pythonwiki.de noch weiter durcharbeiten. :?

just my 2 cent
Es gibt für alles eine rationale Erklärung.
Außerdem gibt es eine irrationale.

Wie man Fragen richtig stellt
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

N317V hat geschrieben:Also ich muss aber sagen, dass ich vor Webprogrammierung mit Python auch noch etwas zurückschrecke. Das geht wohl nicht nur mir so, wenn man mal guckt, dass z.B. sogar dieses Forum mit PHP läuft.
Weil Pocoo noch etwas dauert.
Es gibt da wohl eine lange Reihe an Möglichkeiten; viele Schlagworte wie mod_python, ZOPE, WSGI etc. sind hier ja schon gefallen. Nur: meist erscheint das alles ziemlich kompliziert aufzusetzten und ist teilweise vollkommener Overkill, oft auch einfach schlecht dokumentiert. Das PEP zu WSGI ist zum Beispiel recht informativ, aber ich kann immernoch nicht wirklich sagen, was ich tun muss, um es zu nutzen.
Du musst es gar nicht nutzen. Das ist nur für die Framework Entwickler interessant. Du brauchst nur noch einen netten Aufsatz dazu suchen. Momentan sind die folgenden Frameworks WSGI kompatibel: django, turbogears (eingeschränkt, cherrypy ist leider etwas kaputt), web.py. Als request handler (also dem einfachsten vom einfachsten) hätten wir da noch Colubrid.
Es scheint wohl nicht automatisch bei Python dabei zu sein und ist dementsprechend auch in der Python-Doku nicht zu finden (Version 2.4).
WSGI ist ein Standard. Die dbapi ist ja auch nicht in python dabei...
Bis ich die ZOPE-Doku auch nur annähernd durchgearbeitet hab, hätte ich das bisschen, das ich brauche schon längst "zu Fuß" programmiert. Für größere Projekte sicher geil, aber für den Einstieg einfach viel zu gewaltig.
Und für große zu langsam. ZOPE2 hat atm leider so seine Probleme. Nicht zuletzt wegen des etwas hirnverbrannten programmierens über die Weboberfläche. Habe aber gehört, dass ZOPE3 da alles richtig machen will.
Um das gleich vorweg zu nehmen: auch das ZOPE-Tutorial ist bei mir schon bei der Installation durchgefallen, weil viel zu viele Dinge einfach nicht so funktionieren, wie dort beschrieben und ich dafür dann wieder jede Menge anderer Doku durchforsten muss um das Ding überhaupt mal anständig auf die Platte zu kriegen.
Jep. Die doku ist für die Tonne.
Das sind jetzt nur zwei Beispiele, aber ich hab mich noch mit mod_python, Twisted, Colubrid, Plone und CherryPy beschäftigt. Die Probleme scheinen mir über gleich: entweder zu überladen oder zu unausgereift oder einfach mangelhaft dokumentiert.
mod_python is ein Interface, das ohne einem Aufsatz zu verwenden ist nicht nur dumm, sondern auch verrückt. Twisted ist viel mehr als ein Framework. Colubrid ist sehr gut dokumentiert, wenn was fehlt bitte sagen, aber meines Wissens nach ist alles in der Doku. Plone ist CMS für ZOPE und kein Framework, CherryPy ist ein etwas verkorkster Untersatz für subway und turbogears, aber gleichzeitig auch ein Frameworkansatz oder Application server. Je nachdem wie man es nimmt.
Sich da einen Überblick zu verschaffen ist schon reichlich mühselig, aber ich werd wohl die Liste auf pythonwiki.de noch weiter durcharbeiten. :?
Und wieder einer, der es falsch verstanden hat. Ich kann ja nicht sagen, dass es leicht zu kapieren ist, ich sollte da vielleicht eine Doku schreiben...
TUFKAB – the user formerly known as blackbird
BlackJack

Ich denke wenn man es für den Anfang einfach haben will, so ähnlich wie PHP, dann sollte man mit CGI anfangen. Python lässt sich wegen der Syntax (Einrückung bestimmt Programmstruktur) nicht so einfach in HTML einbetten, deshalb sollte man ein Templating-System wie kid, SimpleTAL oder CheetahTemplate nehmen. Damit kann man Programm und Präsentation recht sauber trennen ohne sich in "Megaframeworks" einarbeiten zu müssen.

Ich persönlich finde `kid` ganz nett. Von der Homepage:
Kid is a simple template language for XML based vocabularies written in Python. It was spawned as a result of a kinky love triangle between XSLT, TAL, and PHP. We believe many of the best features of these languages live on in Kid with much of the limitations and complexity stamped out
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

BlackJack hat geschrieben:Ich denke wenn man es für den Anfang einfach haben will, so ähnlich wie PHP, dann sollte man mit CGI anfangen.
Sollte man nicht. Für eine CGI Anwendung muss man in der Regel viel nervtötendes erledigen. Beispielsweise multipart requests parsen... Da würde ich mir lieber Colubrid oder web.py ansehen. Die haben keine große Einarbeitungszeit.
Python lässt sich wegen der Syntax (Einrückung bestimmt Programmstruktur) nicht so einfach in HTML einbetten,...
Ney. Das stimmt so nicht. Python lässt sich genauso gut in HTML Code einbetten wie PHP auch. Beispiele dafür sind PSP, Cheetah, Spyce und andere.
deshalb sollte man ein Templating-System wie kid, SimpleTAL oder CheetahTemplate nehmen. Damit kann man Programm und Präsentation recht sauber trennen ohne sich in "Megaframeworks" einarbeiten zu müssen.
Da gibt es aber noch einige andere [wiki]Template Engines[/wiki] :wink:

Und wenn du meinst, dass du dich in plain CGI einarbeiten willst - arbeite dich lieber in plain WSGI ein. Ca gleich nervtötend, ist aber ein besserer Weg. Und ansonsten, wie gesagt, Colubrid ist ein einfacher Weg.

Und da das generell immer nach Werbung aussieht, schreib ich jetzt eine WIkiseite zu dem Thema: [wiki]Python und die Webentwicklung[/wiki]
TUFKAB – the user formerly known as blackbird
BlackJack

blackbird hat geschrieben:
BlackJack hat geschrieben:Ich denke wenn man es für den Anfang einfach haben will, so ähnlich wie PHP, dann sollte man mit CGI anfangen.
Sollte man nicht.
Sollte man doch. Was bleibt denn anderes übrig wenn man partout keine Webframeworks verwenden möchte? Diese Anforderung stammt ja nicht von mir.
Für eine CGI Anwendung muss man in der Regel viel nervtötendes erledigen. Beispielsweise multipart requests parsen...
Echt!? Man muss multipart requests parsen? Musste ich bis jetzt noch in keinem CGI Skript machen.
Python lässt sich wegen der Syntax (Einrückung bestimmt Programmstruktur) nicht so einfach in HTML einbetten,...
Ney. Das stimmt so nicht. Python lässt sich genauso gut in HTML Code einbetten wie PHP auch. Beispiele dafür sind PSP, Cheetah, Spyce und andere.
Doch das stimmt so. Ich sagte nicht das es unmöglich ist, sondern nur nicht so einfach. Darum gibt's bei vielen Template-Modulen nur "eingeschränktes" Python. Wenn die Einrückungstiefe wichtig ist, dann kann man eben nicht so einfach HTML und Python mischen. Wenn man dann noch die Datei mal in einem WYSIWYG HTML-Editor bearbeitet dann kann man Probleme bekommen, die man bei PHP nicht hätte.

Da es guter Stil ist Logik und Präsentation zu trennen empfinde ich diese Einschränkung aber eher als Vorteil.
Antworten