17. Python ist elegant
Simple is better than complex.
Readability counts.
There should be one-- and preferably only one
--obvious way to do it.
18. Python ermöglicht sehr schnelle Entwicklung
"Python is fast enough for our site and
allows us to produce maintainable features
in record times, with a minimum of developers,"
said Cuong Do, Software Architect,YouTube.com.
30. Was gibt es noch?
pretty url config
internationlization
caching
authentication
comments
GeoDjango
session management
syndication feeds
file handling/storage
forms logging
Und noch viel mehr…
Django Reinhardt,
Dreifingriger Jazzmusiker der 1930er Jahre,
Namenspate des Webframeworks.
World Online ist ein großer Zeitungsverlag
Unterhält eine Reihe von Newswebseiten
Newsgeschäft ist hochdynamisch
Enge Deadlines erforderten eine Technologie, die sehr schnelle Entwicklung erlaubt
Die Technologie musste hochmodular sein, da die Webseiten für Testzwecke nicht offline genommen werden konnten
Google ermöglicht die Nutzung seiner Infrastruktur via Google App Engine – kostenfrei!
Verschiedene Serverkonfigurationen werden angeboten, auch Django
Das Google App Engine Frontend basiert auf Django
DISQUS ist ein weitverbreitetes Kommentarsystem
Millionen Kommentare Weltweit
Wird von vielen namhaften Webseiten genutzt: CNN, Time Magazine, FoxNews, IGN, engadget
Schwedischer Musiksharingdienst auf P2P-Basis
In Deutschland leider nicht verfügbar wegen zu hoher Forderungen der GEMA
Die NASA nutzt Django für das Frontend ihres Nebula Cloud Service
Auch die New York Time und die Washington Post nutzen Django für die Entwicklung ihrer Webangebote.
Django ist in Python geschrieben und nutzt Python auch als Entwicklungssprache
Python ist nach der britischen Comedytruppe „Monty Python“ benannt
Im „Zen of Python“ sind die Designprinzipien der Sprache pseudophilosophisch festgehalten
Die drei genannten Punkte stellen den Kern der Prinzipien
Einfache Sprachelemente und Syntax
Lesbarer Quellcode
Eindeutige und offensichtliche Implementierungswege
- Die Unternehmen/Institutionen, welche die talentiertesten Informatiker der Welt anheuern nutzen Python in ihren Kernanwendungen
Django folgt der MVC-Architektur
Nutzt aber eine eigene Nomenklatur
Model == Model
Template == View
View == Controller
Deshalb wird in Verbindung mit Django eher von der MTV-Architektur (Model – Template – View) gesprochen!
ORM bildet eine Abstraktionsebene zwischen dem Pythondatenmodell und dem Datenbankdatenmodell
Man kann ein Pythonobjekt an die Datenbank senden und erhält auch ein Pythonobjekt wieder zurück
Der ORM übernimmt die Translation zwischen Python und Datenbank
Dadurch entfällt eine gesonderte SQL-Entwicklung
Die Anwendung wird sicherer, da SQL-Injection durch den ORM (Stichworte Escaping und Prepared Statements) verhindert wird
Die Produktivität ist höher, da man als Entwickler sich nur mit einer Programmiersprache befassen muss und so Paradigmenwechsel vermeidet
Adminbereiche programmieren ist sehr lästige Arbeit
Python bietet vollautomatische Adminbereichsgenerierung anhand des Datenmodells
Die Adminbereiche lassen sich natürlich noch mittels Templates und CSS verfeinern/anpassen
Das Admininterface ist in weniger als 2 Minuten bereit!
Ein Djangoprojekt enthält die benötigte Konfiguration für deine Website
Einem Projekt lassen sich beliebige Django-Apps hinzufügen
Jedes Projekt kommt mit einigen wesentlichen vorinstallierten Apps:
Authentifizierungssystem
Content Type Framework
Sessionverwaltung
Verwaltung für mehrere parallele Website auf einer Djangoinstallation
Messaging Framework
Verwaltung für statische Dateien
Am Beginn einer jeden Django-App steht das Datenmodell
Es wird im Skript models.py definiert
Pythonklassen definieren Entitäten und können beliebige Attribute enthalten
Jede dieser Klassen erbt von models.Model und enthält Mapperfunktionen für alle möglichen Datenbankdatentypen
Das Datenbankschema erstellt Django vollautomatisch mittels dem Befehl syncdb
Das Schema kann auch nachträglich noch (in gewissen Grenzen) geändert werden
Django bietet eine Templateengine
Sie ist für Designer konzipiert worden und beinhaltet daher nur wenige Syntaxelemente
Designer können sich auf die Gestaltung konzentrieren gemäß des Prinzips „Separation of Concerns“
Templates können sich dynamisch je nach „Context“ verhalten.
Der jeweilige Context wird durch die View definiert, welche das Template anspricht
Die View liefert die Business Logic der Django-App
Sie definiert, welche (Context) Daten angezeigt werden sollen
… Aber NICHT auf welche Weise / in welcher Formatierung!
Hierfür ist das jeweilige Template zuständig
settings.py enthält die allgemeine Konfiguration
Vor allem eine Liste der genutzten Apps
urls.py dient dem Mapping von HTTP-Requests auf Funktionen in views.py
Sie bildet die Djangointerpretation des Front Controllers
Das Mapping ist sehr leistungsfähig, da Reguläre Ausdrücke verwendet werden
Es ist darauf ausgerichtet „hübsche“ URLs volldynamisch zu erstellen.
Beispiel: http://www.mysite/articles/2011/february/11/apple-sues-htc/
Abseits der vorinstallierten Apps gibt es noch sehr viele weitere in Django enthaltene Apps
Webforms
Server Logs
Internationalisierung (mehrsprachige Seiten)
Dateiverwaltung / Speicherung
Feederstellung (RSS/ATOM)
Caching (memcache ist Standard)
Geodatenanwendungen mit GeoDjango
Kommentarsystem
Uvm.
Djangoseite (Djangosoftware, Sourcecode, Dokumentation, Tutorials, Blogs uvm.)
http://www.djangoproject.com
Django Book (Ausführlicher User Guide)
http://www.djangobook.com
Django Apps zur freien Verwendung in euren Projekten
http://www.djangopackages.com
Pydev – Das Plugin für Eclipse bildet eine vollständige Python IDE mit vollständiger Unterstützung für Django
http://www.pydev.org
Es gibt auch ein entsprechendes Plugin für Netbeans. Link habe ich gerade nicht zur Hand