Django als PHP Ersatz

Django, Flask, Bottle, WSGI, CGI…
Antworten
xxanonymousxx
User
Beiträge: 7
Registriert: Sonntag 25. September 2011, 14:21

HI,

ich hab große Schwierigkeiten mich mit den Webframeworks von Python anzufreunden.
Ich kenn das ja vom Apache (PHP) her, das ein Modul den PHP Code (apache 2) automatig interpretiert, wenn eine Seite abgefragt wird.

Ich hatte eine Seite gefunden (gegoogelt apache + django + ubuntu 1004 ), die quasy jede einzelne Pythonseite erstmal manuell eingelesen hat.

wie funktioniert eigentlich das mischen von html und python code ??? Bei PHP war das ja <?php Code ?> ..... Wie das bei Django ist, ist mir auch nicht das schlüssig ..... gibts da einfache einsteiger Tuts für Dummies ?


mfg XX
deets

Das mischen von Code & HTML ist eben genau das, was man *nicht* will. Stattdessen hast du

- eine Python-Funktion oder Methode, die deinen Code enthaelt, und ueblicherweise Daten aufbereitet zur Darstellung
- ein Template, welches diese Daten zu HTML verwurstet, unter Verwendung von simplen Konstrukten wie for-schleifen, if-/switch-case-Anweisungen und einfuegen von Daten in die Ausgabe.

Und zu Django gibt's eine grosse Menge an Tutorials.
Benutzeravatar
noisefloor
User
Beiträge: 3843
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

@xxanonymousxx: Wenn du bei Google suchst, dann lass' Apache und Ubuntu als Suchbegriff weg. Django hat weder was mit Apache noch mit Ubuntu zu tun. Dann solltest du wesentlich bessere Treffer bekommen... :-)

Zur Tutorialfrage: auf der Projektseite von Django gibt es sehr ausführlich Tutorials. Und vorab solltest du sich vielleicht schon mal mit dem MVC-Prinzip (Model-View-Controller) Prinzip anfreunden.

Gruß, noisefloor
xxanonymousxx
User
Beiträge: 7
Registriert: Sonntag 25. September 2011, 14:21

ich steh irgendwie immernoch auf dem Schlauch ?!

Wieso hat ubuntu und apache nix damit zu tun ?

Ubuntu ist mein Betriebsystem und Apache mein Webserver.
die Ausführbaren Dateien befinden sich in /var/www

also muss ich doch dem Apache irgendwie sagen, das es django benutzen soll ...... django wiederrum ist für alles andere zuständig .... also session erstellen und code geschnippsel bzw. code ausgabe ..... das man html und python nicht mischen soll/kann ist ja in Ordnung aber mir fehlen die Zusammenhänge, zwischen apache und django !?
lunar

@xxanonymousxx: Apache ist nicht nötig, um Webanwendungen mit Python zu entwickeln. Im Gegenteil, die Verwendung eines vollwertigen, komplexen Webservers ist vielmehr hinderlich.

Web-Rahmenwerke für Python bringen eigene, ganz einfache Server mit, welche Du einfach über die Kommandozeile starten kannst. Diese Server sind direkt auf das jeweilige Rahmenwerk zugeschnitten und benötigen keine Einrichtung. Sie sind meist auch gut genug, um einfache Seiten in kleinen Umgebungen zu betreiben. Die „ausführbaren“ Dateien, also genau genommen die Webanwendung, befindet sich dann auch tunlichst nicht in "/var/www/", sondern in Deinem Heimatverzeichnis, wo Du sie entwickelst. Mit einem vollwertigen Webserver wie Apache musst Du Dich erst beschäftigen, wenn Du Deine Anwendung tatsächlich auf einem großen Server betreiben möchtest.

Wenn Du Dich ernsthaft mit Python und Webentwicklung beschäftigen möchtest, dann vergiss am besten erst einmal alles, und zwar wirklich alles, was Du über Webanwendung in PHP weißt. Dann lies das Einsteiger-Tutorial über Django, wie man also eine einfache Django-Anwendung entwirft, entwickelt und ausprobiert. Jedes Mal, wenn Du dabei dann denkst, „so ginge das jetzt in PHP“, fängst Du bitte wieder am Anfang dieses Absatzes an :)
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

xxanonymousxx hat geschrieben: also muss ich doch dem Apache irgendwie sagen, das es django benutzen soll ...... django wiederrum ist für alles andere zuständig .... also session erstellen und code geschnippsel bzw. code ausgabe ..... das man html und python nicht mischen soll/kann ist ja in Ordnung aber mir fehlen die Zusammenhänge, zwischen apache und django !?
Das ist eine Frage des Deploymentprozesses! Da Django (wie die meisten anderen Webframeworks für Python auch) einen Stand-Alone Entwicklungsserver out-of-the-box mitbringt, kannst Du mit dem Entwickeln loslegen, ohne Dich im Vorfeld und / oder während der Entwicklung mit dem Deployment in die spätere Produktivumgebung abzumühen. Du musst eben keine Dateien in ein Systemverzeichnis kopieren oder ein Mapping in ein lokales www-Verzeichnis im /home/-Ordner konfigurieren. Du arbeitest einfach in einem Verzeichnis Deiner Wahl (oder in einer virtualenv-Umgebung).

Django bietet eine gute Doku für alle Bereiche, also auch für das Deployment. Generell stellt "modwsgi" wohl die Schnittstelle für WSGI basierte Webapps unter dem Apache statt. Du kannst Dein Projekt natürlich später auch auf anderen Servern betreiben ;-)

Lies Dir doch dazu mal die Doku durch. Viele allgemeine Dinge findest Du auch in unserem Wiki.

Edit: lunar war schneller; ich habe aber ja noch ein paar Links, daher poste ich den Kommentar zusätzlich.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Benutzeravatar
noisefloor
User
Beiträge: 3843
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

der Kern der Aussage ist (war): dein Suchbegriff schränkt die Anzahl der (brauchbaren) Treffer unnötig ein. Gründe haben lunar und Hyperion genannt.

Apache plus mod_wsgi ist zwar gängig, um Python-Webanwendungen laufen zu lassen - aber es gibt noch mehr "potente" Server dafür. Ist aber jetzt gerade mal egal, zum Entwickeln reicht immer der enthaltene Stand-Alone Server.

Gruß, noisefloor
Benutzeravatar
daemonTutorials
User
Beiträge: 171
Registriert: Sonntag 6. Februar 2011, 12:06
Kontaktdaten:

lunar hat geschrieben:@xxanonymousxx: Apache ist nicht nötig, um Webanwendungen mit Python zu entwickeln. Im Gegenteil, die Verwendung eines vollwertigen, komplexen Webservers ist vielmehr hinderlich.

Web-Rahmenwerke für Python bringen eigene, ganz einfache Server mit, welche Du einfach über die Kommandozeile starten kannst. Diese Server sind direkt auf das jeweilige Rahmenwerk zugeschnitten und benötigen keine Einrichtung. Sie sind meist auch gut genug, um einfache Seiten in kleinen Umgebungen zu betreiben. Die „ausführbaren“ Dateien, also genau genommen die Webanwendung, befindet sich dann auch tunlichst nicht in "/var/www/", sondern in Deinem Heimatverzeichnis, wo Du sie entwickelst. Mit einem vollwertigen Webserver wie Apache musst Du Dich erst beschäftigen, wenn Du Deine Anwendung tatsächlich auf einem großen Server betreiben möchtest.

Wenn Du Dich ernsthaft mit Python und Webentwicklung beschäftigen möchtest, dann vergiss am besten erst einmal alles, und zwar wirklich alles, was Du über Webanwendung in PHP weißt. Dann lies das Einsteiger-Tutorial über Django, wie man also eine einfache Django-Anwendung entwirft, entwickelt und ausprobiert. Jedes Mal, wenn Du dabei dann denkst, „so ginge das jetzt in PHP“, fängst Du bitte wieder am Anfang dieses Absatzes an :)
Ich war früher ein Verfechter von PHP und habe dann Python kennen gelernt. Ich habe erst GUI's damit gemacht, warum auch immer.

Nachher habe ich simples WSGI und CGI betrieben. Ich habe damals Django abgelehnt.

Jetzt habe ich mich auf Django eingelassen, alles über PHP vergessen und konnte leichter und vor allem schneller und übersichtlicher Webseiten erstellen.

Vorteile von Django:
  • Riesige Bibliothek an vorgefertigten Modulen für z.B. RSS
  • Ein integriertes Admin-Interface das sich sehr leicht scripten lässt
  • Eine klare Aufteilung zwischen HTML-Code und Python-Code
  • Leichtes Modellieren des Objektes und der Datenbank
  • Schnelle Lernkurve da z.B. eine Simple Artikelanzeige und Verwaltung einfacher zu erstellen ist als ein Umfrage-System.
Nachteile von Django:
  • Beim öffentlichen Gang muss man einen Provider finden, der Python und Django unterstützt. Meistens reicht sogar ein 5€ vStart von Alfahosting.de. Frisst bei wenig Besuchern nicht viel.
  • Wenige Provider
Du siehst: Die Entwicklung ist schnell und einfach - das finden von Speicherplatz eher schwer. Da musst du schon was springen lassen.

Aber ich kann dir evtl. was ans Herz legen: https://www.aditsystems.de/webhosting_wunschtarif.php

bzw. https://www.alwaysdata.com/

Ich hoffe du kannst das alles Verstehen.

Und eins noch: "Django ist ein Web-Framework - PHP ist eine Websprache" Django kannst du nie und nimmer als Ersatz nehmen. Für PHP gibt es sowieso keinen Ersatz :twisted:
LG Maik
Antworten