Vorheriger Artikel Nächster Artikel

Django – Das Python-Framework für schnelle Entwicklungsprozesse

Django ist mittlerweile das beliebteste Python-Framework und hier stelle ich es euch vor. Über gibt es viele Vorurteile: Es sei eine schwer zu verstehende Sprache, ungeeignet für Einsteiger und schwer zu konfigurieren. Doch sollte man diese Vorurteile mittlerweile in die Schublade „Museumsmentalität“ packen und sich einfach Mal einen Tag Zeit nehmen, um sich Django anzusehen. Denn Django bietet einige großartige Vorteile, die man nach einiger Zeit einfach nicht mehr missen möchte.

Django – Das Python-Framework für schnelle Entwicklungsprozesse

Django baut auf dem MVC-Prinzip auf, in einer etwas abgewandelten Form. Bei Django heiß das MVT –Model-View-Template. Die Views sind in diesem Fall eher ähnlich den Controllern und Templates kann man als Views ansehen. Django bietet eine umfangreiche Template-Sprache, einen Object-relational mapper, ein automatisch erzeugtes Admin-Interface und ein mit regulären Ausdrücken anpassbares URL-Design.

Was Django von der Konkurrenz unterscheidet

Im URL-Design unterscheidet sich Django klar von der Konkurrenz um Ruby-on-Rails und PHP-Frameworks. URLs müssen explizit angegeben werden und werden nicht automatisch über Verzeichnisse oder Dateien automatisch erstellt. Dieser Punkt stellt für viele Entwickler einen Knackpunkt dar. Doch erreicht Django damit auch eine erweiterte Modularität und vor allem wird dadurch der unbefugte Zugriff auf Dateien ein Riegel vorgeschoben. Module werden in sogenannten Apps erstellt. Diese sind komplett von der Logik der Hauptanwendung getrennt und haben eigene Angaben zu Modellen, Templates und URLs. All diese Dinge können aber auch individuell und problemlos angepasst werden.

Ein großer Vorteil liegt im ORM. Durch Hilfe des Object-Relational mapper kann man mit Hilfe weniger Zeilen im Code in den Models eine Datenbankstruktur anlegen und Django erzeugt automatisch das SQL für die Erstellung der Tabellen in verschieden Datenbankmodellen wie MySQL oder PostgreSQL und erstellt dann die entsprechenden Tabellen. Durch ORM geht auch das Handling der Modelle relativ leicht von der Hand. Das Problem sind hierbei Migrationen an der Datenbank, denn Django hat standardmäßig keine Migrationsmöglichkeiten, für dieses Problem gibt es aber bereits Möglichkeiten.

Des Weiteren sind die Programmlogiken und statische Daten, bzw. Media-Dateien strikt voneinander getrennt und können zum Beispiel auch auf verschiedenen Servern liegen. Zum Beispiel bei verschiedenen Cloud-Anbietern.

Django Models
Django Models

Die Einrichtung einer Entwicklungsumgebung für Django

Das Einrichten der passenden Entwicklungsumgebung geht nun auch relativ leicht von der Hand. Mit Hilfe von „Virtualenv“ kann der Entwickler sich eine von der Haupt-Python-Installation getrennte virtuelle Umgebung einrichten und mit Hilfe von PIP sich dementsprechend Django und Module nachinstallieren. Besonders leicht geht das unter Linux oder MacOSX von der Hand.

Templates in Django

Das Template-System in Django unterscheidet sich nicht großartig von bekannten Template-Engines wie Smarty für PHP. Es können Blöcke angelegt werden in der Form {% block title %}{% endblock %} für ein Basis-Template. Diese Blöcke können in Templates die dieses Basis-Template nutzen dementsprechend angepasst werden. Variablane aus den Modellen können mit dem Befehl {{ variable }} aufgerufen werden und Kontrollstrukten in der Form {% for x in y%}{% endfor %}. Der Vorteil durch die Template-Engine ist unvekennbar und unverzichtbar für eine strukturierte Zusammenarbeit mit einem entwicklungstechnisch unversierten Webdesigner.

Durch all diese Dinge wird Django zu einem flexiblen Framework, das langwierige und zum Teil stumpfsinnige Entwicklungsprozesse optimiert oder auch ganz abschafft. Und Optimierung sollte der Wunsch eines jeden Entwicklers sein.

Für mich persönlich ist Django wirklich eine Bereicherung für die Welt der Webentwickler und sollte daher auch von jedem einmal getestet werden. Ich habe mich überzeugen lassen von den Vorteilen Djangos und werde in Zukunft meine Projekte zum großen Teil mit Django realisieren. Auch kleinere Projekte, denn nach dem Einrichten einer guten Entwicklungsumgebung, lassen sich auch kleine Projekte schnell und einfach realisieren.

Was haltet ihr von Django und könntet ihr euch vorstellen von anderen Scriptsprachen und Frameworks auf Django zu wechseln ?

Links

NEU: Lass dir diesen Artikel vorlesen
Ein Service von t3n, in Kooperation mit Narando.
Vorheriger Artikel Zurück zur Startseite Nächster Artikel
10 Antworten
  1. von Thomas Quensen am 10.10.2011 (14:41 Uhr)

    Schöner Artikel, ich finde Python vor allem wegen der Syntax interessant und habe schon lange vor, mir das mal genauer anzusehen... finde nur nie die Zeit dafür.
    Das, was du hier über Django schreibst erinnert mich aber sehr an Symfony2, vor allem das, was unter dem Punkt "Was Django von der Konkurrenz unterscheidet" steht ;)

    Auf jeden Fall hab ich jetzt wieder Lust bekommen, mich doch noch mal mit Python zu beschäftigen^^

    Antworten Teilen
  2. von rob am 10.10.2011 (15:26 Uhr)

    Ich habe mein letztes Projekt auch mit Django umgesetzt. Ich kannte Python und einige PHP Webframeworks. Ich war von dem ORM Teil und dem automatischen Adminbereich schon sehr erstaunt. Mein Projekt war auch sehr schnell umgesetzt. Die meiste Arbeit war wirklich der HTML, CSS und JS Part. Alles, was ich in Python schreiben musste ging sehr schnell von der Hand und war auch recht einfach umzusetzen. Aber ich denke, dass ein Tag gut reicht um sich mit dem Framework mal auseinanderzusetzen um zu erkennen, welche Vorteile es bietet.

    Antworten Teilen
  3. von svenschannak am 10.10.2011 (15:36 Uhr)

    @rob: Ich denke auch dass man ruhig mal einen Arbeitstag nutzen sollte um da reinzuschnuppern.

    @ Thomas, ja da hast du Recht, manche Sachen sind auch schon woanders umgesetzt worden. Den größten Unterschied für Mich macht aber das explizite URL-Design aus.

    Antworten Teilen
  4. von Thomas Quensen am 10.10.2011 (15:47 Uhr)

    @Sven Die explizite Definition der URLs in Django unterscheidet sich jetzt nicht sonderlich von der in Symfony. Im Vergleich zu den Django-Beispielen finde ich die Symfony2-Lösung noch eleganter. Hier mal ein Beispiel im YAML-Format:

    example_route:
    pattern: /example/{id}.{_format}
    defaults: { _controller: "ExampleBundle:Example:show", _format: ~ }
    requirements: { id: "[0-9]+", _format: "(html|pdf)" }

    In Symfony 1.x funktionierte das auf ähnliche Weise - das ist also kein expliziter Grund, um auf Django zu setzen ;)

    Antworten Teilen
  5. von svenschannak am 10.10.2011 (17:23 Uhr)

    @Thomas, da gebe ich dir auch Recht, aber muss ich in Symfony auch jede URL explizit definieren ? Oder geht das auch über implizite Auswege ?

    Antworten Teilen
  6. von Raphael am 10.10.2011 (19:48 Uhr)

    Ich kann Django wärmstens empfehlen. Ich komme aus der PHP/Drupal Ecke und wollte mal ein bisschen neues Territorium entdecken. Das Deployen auf einen produktiven Server ist/war zugegebenermassen nicht ganz einfach und auch jetzt blicke ich noch nicht ganz durch, aber sonst ist es super! Ich liebe das ORM und den vorgefertigen Admin bereich und auch wie die Templates aufgebaut sind.

    Antworten Teilen
  7. von binnen am 10.10.2011 (19:48 Uhr)

    und wenn das admin noch schöner sein soll:
    https://github.com/sehmaschine/django-grappelli
    http://code.google.com/p/django-grappelli/wiki/screenshots (veraltete screenshots, zugegebenermaßen)

    ein anwendungsbeispiel auch gleich mitgeliefert:
    https://www.bookamat.com/

    Antworten Teilen
  8. von Lars am 10.10.2011 (20:37 Uhr)

    Ist das ein Scherz?
    "[...] Über Python gibt es viele Vorurteile: Es sei eine schwer zu verstehende Spr
    ache, ungeeignet für Einsteiger"
    Python wird als einfache Einsteigersprache angesehen...

    Antworten Teilen
  9. von Sebastian am 11.10.2011 (08:52 Uhr)

    Sauber, ihr schreibt über Django! Geniales Framework.
    Aber wie Raphael schon sagt, das deployment hat mir am Anfang auch Probleme bereitet. Das ist der einzige große Nachteil, den man leider erst später wirklich kennenlernt. Denn die ganze Entwicklung vorher ist super easy, mit eingebautem entwicklungsserver z.b..
    Ich kann es jedem empfehlen.

    Antworten Teilen
  10. von Thomas Quensen am 11.10.2011 (10:31 Uhr)

    @Sven: Das manuelle Konfigurieren ist in Symfony2 die übliche Vorgehensweise, es gibt aber auch z.B. das "FOSRestBundle", welches automatisch CRUD-Urls generiert. mit einer kurzen Konfiguration hat man dann z.B. automatisch die Routen
    GET /user, GET /user/{id}.{_format}, POST /user/{id}, DELETE /user/{id} usw.
    Das ist im Fall einer REST-API ganz Praktisch, da hier das vorgegebene URL-Format gut passt.

    Andere Plugins bieten z.B. auch die Möglichkeit, übersetzbare urls zu generieren, so dass z.B. /products/xyz und /produkte/xyz auf die gleiche Seite, aber mit ander Sprache verweisen

    Antworten Teilen
Deine Meinung

Bitte melde dich an!

Du musst angemeldet sein, um einen Kommentar schreiben zu können.

Jetzt anmelden

Mehr zum Thema Python
Für Ruby-, Python- und R-Skripte: Mit Blockspring blitzschnell zur eigenen API
Für Ruby-, Python- und R-Skripte: Mit Blockspring blitzschnell zur eigenen API

Blockspring bietet eine verblüffend einfache Möglichkeit, um aus einem Python-, Ruby- oder R-Script eine API zu erstellen. Der Service ist kostenlos – und ihr braucht dafür keinen eigenen Server. » weiterlesen

Airypi: Raspberry Pi kinderleicht mit dem Browser steuern
Airypi: Raspberry Pi kinderleicht mit dem Browser steuern

Airypi soll Raspberry-Pi-Nutzern eine einfache und elegante Möglichkeit bieten, ihren Kleinstrechner über den Webbrowser zu steuern. » weiterlesen

Wagtail: Flexibles Django-Open-Source-CMS mit Fokus auf Usability
Wagtail: Flexibles Django-Open-Source-CMS mit Fokus auf Usability

Wagtail ist ein CMS, das auf dem Python-Framework Django basiert und den Fokus auf große und komplexe Webprojekte legt. Der Vorteil: ein CMS für den Inhalteersteller, das aber auch für Entwickler … » weiterlesen

Kennst Du schon unser t3n Magazin?

t3n 38 jetzt kostenfrei probelesen! Alle Inhalte des t3n Magazins Diesen Hinweis verbergen