Zum Inhalt springen
Der Guide für ein smartes Leben.
Web-Anwendungen mit Django

Teil 3: Django: Alternative zu PHP

Autor: Redaktion pcmagazin • 3.3.2009 • ca. 2:30 Min

Admin-Bereich erzeugen Um den Admin-Bereich der Anwendung zu erstellen, fügen Sie in der settings-Datei die Anwendung django.contrib.admin zur Liste der INSTALLED_APPS hinzu. Rufen Sie syncdb erneut auf, um die Datenbank-Tabellen dafür erstellen zu lassen. Öffnen Sie die Datei urls.py und komme...

Admin-Bereich erzeugen

Um den Admin-Bereich der Anwendung zu erstellen, fügen Sie in der settings-Datei die Anwendung django.contrib.admin zur Liste der INSTALLED_APPS hinzu. Rufen Sie syncdb erneut auf, um die Datenbank-Tabellen dafür erstellen zu lassen. Öffnen Sie die Datei urls.py und kommentieren Sie die zwei Zeilen nach uncomment the next two ... am Anfang der Datei aus. Entfernen Sie den Kommentar in der letzten Zeile nach Uncomment the next... ebenfalls.

PHP-Alternativen
Beim Hinzufügen neuer Einträge löst Django definierte Referenzen automatisch auf und liefert hier etwa eine Liste aller Mitarbeiter.
© Archiv

Um das Admin-Interface nutzen zu können, benötigen Sie jetzt noch eine Datei mit der Definition der Klassen, die administriert werden sollen. Erstellen Sie dazu im Anwendungsverzeichnis eine Datei admin.py. Dort wird für jede Klasse festgelegt, welche Optionen das Admin-Interface anzeigen soll:

list_display=(liste): definiert die Felder, die in der Übersichtsliste angezeigt werden. list_filter=feldname: zeigt einen Filter an, der die Ergebnisse nach der Auswahl der unterschiedlichen Feldeinträge sortiert.

search_fields= feldname: integriert eine Suchmaske in die Übersichtsliste. Die Feldnamen in der Liste geben an, welche Felder Django bei der Suche durchsuchen soll.

Für Company sieht der Eintrag folgendermaßen aus:

class CompanyAdmin(admin.ModelAdmin):
list_display = ('name',
'companytype')
list_filter = ['projects']
search_fields = ['name']

Anschließend wird die neu definierte Admin- Klasse noch in der Admin-Umgebung registriert und der Company-Klasse zugeordnet:

admin.site.register(Company,
CompanyAdmin)

Die Einträge für die anderen Model-Klassen sind entsprechend. Speichern Sie die Datei, starten Sie dann den Django-Entwicklungsserver mit

python manage.py runserver

und öffnen Sie im Browser die Adresse https://localhost:8000/admin. Falls Sie die Portnummer des Servers ändern wollen, genügt die Angabe einer entsprechenden Zahl nach runserver. Loggen Sie sich ein und fügen Sie zuerst eine neue Firma, und dann einige Mitarbeiter hinzu - der umgekehrte Vorgang ist nicht möglich, da jeder Mitarbeiter einer Firma zugeordnet sein muss, und das Feld nicht leer sein darf.

Erstellen Sie einige Projekte und Produkte. Testen Sie dann die Filter- und Suchfunktionen. Django löst alle Referenzen des Datenmodells korrekt auf und zeigt beispielsweise beim Anlegen eines neuen Mitarbeiters ein Dropdown mit allen zur Verfügung stehenden Firmen an.

Das gesamte automatisch generierte Admin-Interface ist dabei so leistungsfähig und gut zu bedienen, dass es auch als Killer-Feature von Django gilt. Ändern Sie in der Settings-Datei die Variable LANGUAGE_CODE von en-US auf de-DE, um das Admin-Interface auf Deutsch anzuzeigen.

Tipp: Beim Verwenden von Firefox unter Windows XP und Vista reagiert die Admin-Oberfläche quälend langsam, da die IPv6-Namensauflösung ganz offenbar Probleme verursacht. Zur Abhilfe geben Sie about:config ein, suchen Sie nach network.dns.disableIPv6 und setzen Sie den Wert auf true.

Admin anpassen

Natürlich lässt sich das Aussehen und das Layout des Admin-Bereichs ebenfalls anpassen. Da das Admin-Interface in Django programmiert ist, kommen dort ebenfalls Templates zum Einsatz. Standardmäßig werden die Template-Dateien unter [Python-Installationspfad]/Lib/site-packages/ django/contrib/admin/templates verwendet.

PHP-Alternativen
Der Admin-Bereich für Benutzer der Website wird ebenfalls automatisch erzeugt. Hier werden die Benutzerrechte vergeben und die Benutzergruppen zugewiesen.
© Archiv

Um eigene Templates zu entwerfen, erstellen Sie im Root-Verzeichnis Ihrer Website ein neues Verzeichnis templates und darin ein Unterverzeichnis admin und kopieren die Datei base_site.html aus oben genanntem Ordner dorthin.

Jetzt müssen Sie Django nur noch mitteilen, dass dieser Template-Pfad existiert. Öffnen Sie dazu Ihre settings.py und fügen Sie in die Liste TEMPLATE_DIRS den absoluten Pfad zu Ihrem Template-Verzeichnis ein. Achten Sie darauf, dass auch unter Windows nur der Backslash verwendet wird, also beispielsweise:

D:/daten/django/solarsite/templates

Die Admin-Oberfläche lässt sich natürlich noch weiter modifizieren und erweitern - mehr dazu lesen Sie in der ausführlichen Dokumentation von Django.