Die Admin-Applikation

Als nächstes werden wir die Admin-Applikation aktivieren, damit wir Daten für unser Projekt eingeben, bearbeiten und löschen können.

Diese Applikation ist schon in Django enthalten.

Die eigene Applikation beim Admin registrieren

Damit der Admin mit unser Applikation benutzt werden kann, müssen wir unsere Models dem Admin bekannt machen.

Dazu muss die Datei admin.py in der Applikation angelegt werden. Das Projekt sieht danach folgendermassen aus:

cookbook
|-- cookbook
|   |-- __init__.py
|   |-- settings.py
|   |-- urls.py
|   `-- wsgi.py
|-- manage.py
`-- recipes
    |-- admin.py
    |-- __init__.py
    |-- models.py
    |-- tests.py
    `-- views.py

Danach öffnest du die Datei in deinem Editor und fügst die beiden folgenden Zeilen Code ein:

from django.contrib import admin

from .models import Category, Recipe

Damit stehen dir der Admin und die Models der Applikation zur Verfügung.

Der zweite import ist ein relativer import. Diese wurden in PEP 328 definiert und sind ab Python 2.6 direkt verfügbar. In Python 2.5 müssen sie mit dem folgenden Code geladen werden:

from __future__ import absolute_import

Als nächstes erstellen wir eine Klasse, um das Model Category beim Admin zu registrieren:

class CategoryAdmin(admin.ModelAdmin):
    prepopulated_fields = {'slug': ['name']}


admin.site.register(Category, CategoryAdmin)

Mehr ist nicht zu tun.

Das Attribut prepopulated_fields hilft in der Admin-Applikation dabei, dass Feld slug bei der Eingabe automatisch zu füllen. In diesem Fall mit dem Attribut name des Models.

Das gleiche tun wir jetzt für das Model Recipe:

class RecipeAdmin(admin.ModelAdmin):
    prepopulated_fields = {'slug': ['title']}


admin.site.register(Recipe, RecipeAdmin)

Die vollständige Datei

Die Datei admin.py sollte nun so aussehen:

from django.contrib import admin

from .models import Category, Recipe


class CategoryAdmin(admin.ModelAdmin):
    prepopulated_fields = {'slug': ['name']}


class RecipeAdmin(admin.ModelAdmin):
    prepopulated_fields = {'slug': ['title']}


admin.site.register(Category, CategoryAdmin)
admin.site.register(Recipe, RecipeAdmin)

Die Admin-Applikation aktivieren

Um die Admin-Applikation zu aktivieren sind zwei Schritte nötig.

Anpassen der Konfiguration

Entferne in der Datei settings.py in INSTALLED_APPS das Kommentarzeichen vor der Zeile 'django.contrib.admin',, um die Admin-Applikation zu aktivieren.

URLConf anpassen

Damit die Admin-Applikation auch im Browser aufgerufen werden kann müssen wir die URL des Admins ebenfalls aktivieren.

Öffne dazu die Datei cookbook/urls.py und entferne die Kommentarzeichen in den Zeilen 4, 5 und 16. Danach sieht die Datei so aus:

from django.conf.urls import patterns, include, url

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

urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'cookbook.views.home', name='home'),
    # url(r'^cookbook/', include('cookbook.foo.urls')),

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

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