You are here

Django Beispielprojekt Teil 3 - Applikation und Admin-Frontend

Ein Django-Projekt besteht aus verschiedenen Applikationen. Eine Applikation ist eine Anwendung innerhalb eines Projektes, die bestimmte Aufgaben übernimmt. Jeder Applikation liegt ein Model (Datenstruktur) zugrunde.

Für unser Projekt benötigen wir zunächst nur eine Applikation. Diese Appliaktion soll folgende Funktionen bieten:

  • Adressen suchen
  • Adressen anzeigen
  • Adressen löschen
  • Adressen ändern
  • Adressen hinzufügen

Die Applikation soll den Namen adresses tragen. Um sie zu erzeugen muss zunächst in das Projektverzeichnis gewechselt werden, in unserem Beispiel ist das d:\projects\myadress. Die Grundstruktur der Applikation wird mit dem folgenden Befehl erzeugt:

django-admin.py startapp adresses

Im erzeugten Unterverzeichnis adresses befindet sich neben anderen Dateien die Datei models.py. In dieser Datei wird die Datenstruktur definiert. Unsere Adressdatenbank soll folgende Datenfelder enthalten:

  • Name (lastname)
  • Vorname (firstname)
  • Telefonnummer (phone)
  • Vorwahl (areacode)
  • Geburtstag (birthday)
  • Ort (location)
  • Straße (street)
  • Postleitzahl (zipcode)
  • Mailadresse (mail)

Eine Auflistung und Erklärung aller verwendbaren Datentypen findet sich unter http://docs.djangoproject.com/en/1.1/ref/models/fields/#model-field-types

Die Felder mit ihren Datentypen werden in die Datei models.py eingetragen. Die Datei sollte jetzt wie folgt aussehen:

from django.db import models

class Adress(models.Model):
    lastname= models.CharField(max_length=30)
    firstname = models.CharField(max_length=20)
    phone=models.CharField(max_length=30)
    areacode=models.CharField(max_length=10)
    birthday=models.DateField()
    location=models.CharField(max_length=50)
    street=models.CharField(max_length=50)
    zipcode=models.CharField(max_length=5)
    mail=models.EmailField()

Jetzt muss die Applikation adresses zu den installierten Applikationen des Projektes hinzugefügt werden. Dazu öffnen wir die Datei settings.py im Hauptverzeichnis des Projektes, also im Verzeichnis d:\projects\myadress.

Am Ende der Datei befindet sich eine Auflistung der bereits installierten Applikationen:

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
)

Hier fügen wir unsere Applikation adresses ein. Da unsere Applikation zum Projekt myadress gehört, lautet der Eintrag myadress.adresses:

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'myadress.adresses'
)

Nach diesen Änderungen muss die Datenbank des Projektes mit den neuen Strukturen aktualisiert werden. Dazu wird auf der Kommandozeile im Projektverzeichnis d:\projects\myadress folgender Befehl eingegeben:

python manage.py sql adresses 

Es sollte folgendes auf dem Bildschirm zu sehen sein:

Wenn hier Fehler angezeigt werden, wird auch aufgelistet, an welcher Stelle in der models.py der Fehler aufgetreten ist. Meist handelt es sich um Syntaxfehler. Ist die Ausgabe fehlerfrei, kann die Datenbank synchronisiert werden mit dem Befehl

python manage.py syncdb

Um die Adressdatenbank verwalten zu können, muss jetzt noch das Admin-Frontend aktiviert werden. Dazu wird wieder die Datei "settings.py" aufgerufen und die Admin-Applikation analog zu unserer Adress-Applikation  zu den installierten Anwendungen hinzugefügt.

Der entsprechende Eintrag lautet django.contrib.admin. Die Sektion mit den installierten Applikationen sollte jetzt so aussehen:

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'myadress.adresses',
    'django.contrib.admin'
)

Nach dieser Änderung muss die Datenbank wieder synchronisiert werden:

python manage.py syncdb

Über die Datei urls.py im Projektverzeichnis (d:\projects\myadress) werden den Applikationen entsprechende URLs zugewiesen, über die sie erreichbar sein sollen. Um die Admin-Applikation zu aktivieren, müssen, wie in der Datei beschrieben, für die Zeilen:

from django.contrib import admin
admin.autodiscover()

(r'^admin/', include(admin.site.urls)),

die Kommentarzeichen entfernt werden. Die geänderte Datei "urls.py" sollte jetzt so aussehen:

from django.conf.urls.defaults import *

# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    # Example:
    # (r'^myadress/', include('myadress.foo.urls')),

    # Uncomment the admin/doc line below and add 'django.contrib.admindocs'
    # to INSTALLED_APPS to enable admin documentation:
    # (r'^admin/doc/', include('django.contrib.admindocs.urls')),

    # Uncomment the next line to enable the admin:
    (r'^admin/', include(admin.site.urls)),
)

Jetzt kann die Admin-Applikation getestet werden. Dazu wird über

python manage.py runserver

der Webserver gestartet. Die Admin-Applikation kann jetzt im Browser über http://127.0.0.1:8000/admin aufgerufen werden. Es erscheint zuerst die Maske zur Anmeldung. Hier müssen Login und Passwort den definierten Superusers angegeben werden:


Nach Eingabe der Logindaten öffnet sich die Admin-Applikation. Hier können Benutzer und Gruppen sowie Seiten angelegt und geändert werden.

Was fehlt ist die Verwaltung der Adressen. Um über das Admin-Frontend auf unsere Adress-Applikation zugreifen zu können, muss diese der Admin-Applikation bekannt gemacht werden.

Dazu legen erstellen wie eine Datei namens admin.py mit folgendem Inhalt, die im Verzeichnis der Adressaplikation, also in unserem Beispiel "d:\projects\myadress\adresses" abgelegt wird.

from myadress.adresses.models import Adress
from django.contrib import admin

admin.site.register(Adress)

Über den "register" Befehl wurde jetzt die Verwaltung der Adressen in die Admin-Applikation integriert. Wenn jetzt die Admin-Applikation erneut aufgerufen wird, sollte auch die Adressverwaltung sichtbar sein:

Über den "Add" Button können jetzt Adressen eingetragen werden. Es öffnet sich dazu eine einfache Eingabemaske

Wenn Sie mehrere Adressen eingegeben haben und sich die Ergebnisliste ansehen, werden sie nicht zufrieden sein, weil sich folgendes Bild bietet:

lle Einträge haben die gleiche Bezeichnung "Adress object". Wie man die Ergebnisliste anpassen kann, so dass die tatsächlichen Namen sichtbar sind, beschreibe ich im nächsten Teil ;o).

AddThis: 

Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer