Drücke die Tasten ◄ ► für weitere Artikel  

Django – Das Python-Framework für schnelle Entwicklungsprozesse

Django ist mittlerweile das beliebteste Python-Framework und hier stelle ich es euch vor. Über Python 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 auf Django zu wechseln ?

Links

30 Shares bis jetzt – Dankeschön!

Bewerten
VN:F [1.9.22_1171]
10 Antworten
  1. von Thomas Quensen am 10.10.2011 (14:41Uhr)

    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^^

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

    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.

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

    @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.

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

    @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 ;)

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

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

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

    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.

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

    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/

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

    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...

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

    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.

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

    @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

Deine Meinung

Bitte melde dich an!

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

Jetzt anmelden

Mehr zum Thema Frameworks
Startup Framework: Cooler Baukasten für schicke Websites
Startup Framework: Cooler Baukasten für schicke Websites

Das Startup Framework soll jungen Tech-Unternehmen beim Erstellen ihrer Websites helfen. Die damit produzierten Seiten sind responsiv und unterstützen auch hochauflösende Displays. » weiterlesen

Bootstrap 3.1 ist da: Wir zeigen euch die Neuerungen
Bootstrap 3.1 ist da: Wir zeigen euch die Neuerungen

Bootstrap 3.1 steht ab sofort zum Download bereit. Zu den neuen Features gehört unter anderem ein offizieller Sass-Port. » weiterlesen

Foundation 5: Zurbs responsive UI-Framework startet durch
Foundation 5: Zurbs responsive UI-Framework startet durch

Zurb hat die fünfte Version des beliebten UI-Frameworks namens Foundation veröffentlicht. Wir zeigen euch die wichtigsten Neuerungen und warum Foundation 5 auch für Einsteiger leicht zu meistern is ... » weiterlesen

Kennst Du schon unser t3n Magazin?

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