25.5 Djangos Administrationsoberfläche 

Eine der zeitaufwendigsten Aufgaben bei der Erstellung einer Webanwendung ist die Entwicklung einer sogenannten Administrationsoberfläche, kurz ACP (engl. Admin Control Panel). ACPs sind Werkzeuge, die den Betreibern einer Seite das nachträgliche Verändern der Seiteninhalte ermöglichen, ohne den Programmcode zu verändern oder direkt auf die Datenbank zuzugreifen.
Beispielsweise sollte ein ACP einer Nachrichtenseite neue Meldungen hinzufügen und alte bearbeiten oder löschen können. Ebenso wäre eine Administrationsoberfläche für die Erstellung von Umfragen zu aktuellen Themen denkbar.
Im Prinzip ist ein ACP eine eigene Webanwendung, mit der sich alle Daten der zu administrierenden Anwendung bearbeiten lassen. Dementsprechend hoch ist auch der Entwicklungsaufwand.
Die gute Nachricht für Sie als angehenden Django-Entwickler ist, dass Sie sich in Ihren Projekten nur wenig um die Programmierung von ACPs kümmern müssen. Django erstellt fast vollautomatisch eine komfortable und zweckmäßige Administrationsoberfläche, sodass Sie von der lästigen Eigenimplementation verschont bleiben. Sie müssen nur kleine Änderungen an Ihrem Datenmodell und der Konfiguration des Projekts vornehmen.
Zuerst müssen Sie die Applikation mit dem Namen "django.contrib.admin" in das INSTALLED_APPS-Tupel der settings.py Ihres Projekts einfügen, die Django bereits mitliefert:
INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'unser_projekt.news', 'django.contrib.admin' )
Da die Administrationsapplikation zusätzliche Tabellen in der Datenbank benötigt, müssen Sie noch einmal das manage.py-Script mit dem Parameter syncdb starten:
$ python manage.py syncdb
In der models.py muss jede Modellklasse, für die es ein ACP geben soll, in ihrem Körper eine Klasse namens Admin definieren, die im einfachsten Fall nur ein pass enthält. Im ersten Schritt machen wir nur die Meldung-Klasse über das ACP zugänglich: [Lassen Sie sich nicht durch das fehlende (object) verwirren. Django verwendet noch old-style classes. ]
class Meldung(models.Model): ... class Admin: pass
Die letzte zur Einrichtung eines ACPs notwendige Änderung betrifft die Datei urls.py, in der wir das Kommentarzeichen für eine bestimmte Zeile entfernen müssen. Die fertige urls.py sieht dann so aus:
from django.conf.urls.defaults import * urlpatterns = patterns('', # Uncomment this for admin: (r'^admin/', include('django.contrib.admin.urls')), )
Auch wenn Sie jetzt wahrscheinlich noch nicht verstehen, was der Inhalt der Datei konkret bedeutet, ist das kein Problem. Wir werden sehr bald die Funktionsweise dieser Datei im Detail behandeln.
Nun können wir bewundern, was Django als Administrationsoberfläche für unsere Anwendung gezaubert hat. Dazu starten Sie einfach den Entwicklungswebserver mit python manage.py runserver und besuchen mit Ihrem Webbrowser die Adresse http://127.0.0.1:8000/admin. Beim Login-Prompt geben Sie die Benutzerdaten ein, die Sie beim ersten Lauf von python manage.py syncdb angegeben haben. Anschließenden präsentiert sich Ihnen eine schicke Administrationsmaske:
Abbildung 25.7 Startseite des Django-ACPs
Uns interessiert hier nur die unterste der drei Sektionen, mit deren Hilfe wir unsere News-Meldungen bearbeiten können. Wenn Sie auf »Meldungs« [Django bildet den Plural immer durch Anhängen eines »s«. Dies ist manchmal nicht sehr sinnvoll, wie obiges Beispiel zeigt. ] klicken, gelangen Sie zur Übersicht aller gespeicherten Meldungen (siehe Abbildung 25.8).
Abbildung 25.8 Alle gespeicherten Meldungen
Über die Administrationsoberfläche können Sie jede Meldung editieren, neue Meldungen hinzufügen und Meldungen löschen. Wie Sie sehen können, hat Django für die Anzeige der Meldungen die __unicode__-Methode des Models verwendet.
Da die Handhabung des ACPs sehr einfach ist, wollen wir uns als Beispiel mit dem Verändern einer Meldung begnügen.
Wir klicken beispielsweise auf die Meldung mit dem Text »Wie findet ihr das Framework?« und gelangen so zur Editieransicht. Dort werden wir als Demonstration den Text in »Wie findet ihr das Django-Framework?« umändern (siehe Abbildung 25.9).
Abbildung 25.9 Editieren ener Meldung
Nach dem Klick auf die Schaltfläche Sichern in der Ecke rechts unten ist die Meldung mit ihrem neuen Text in der Datenbank gespeichert, und Sie gelangen wieder zur Meldungsübersicht.
Als interessantes Feature speichert Django zu jedem Datensatz seine »Veränderungsgeschichte«, also wann wer welche Änderung an den Daten vorgenommen hat. Dieses Extra ist vor allem dann nützlich, wenn viele Leute Zugang zu der Administrationsseite haben und man den Überblick über die vorgenommenen Änderungen behalten möchte. Die Veränderungen zu einem bestimmten Datensatz können über die Schaltfläche Geschichte abgerufen werden.
Sie sollten sich vor Augen halten, welchen großen Nutzen dieser Service von Django hat: Aus einer einfachen Model-Definition werden die gesamte Datenbank und sogar das dazugehörige Verwaltungswerkzeug generiert. Diese Arbeit hätte Sie sonst Stunden gekostet.
Natürlich bietet das Django-ACP unzählige weitere Konfigurationsmöglichkeiten, die im Rahmen dieses Buchs nicht besprochen werden können. Wir verweisen Sie wieder einmal auf die sehr gute Dokumentation der Django-Homepage (http://www.djangoproject.com), wenn Sie weitere Informationen suchen.