Django Python

Bessere Adminoberfläche mit django-unfold

django-unfold ist ein Open-Source-Paket, das die Django-Adminoberfläche modernisiert und um eine benutzerfreundliche UI erweitert.


4 Minuten Lesezeit
12 Nov 2024
Bessere Adminoberfläche mit django-unfold

Was lerne ich in diesem Kurs?

Hier ist eine Anleitung, wie du django-unfold in dein Django-Projekt integrierst und die Vorteile des Tools nutzen kannst.

Was ist django-unfold?

django-unfold ist ein Open-Source-Paket, das die Django-Adminoberfläche modernisiert und um eine benutzerfreundliche UI erweitert.

Es bietet eine schlanke und anpassbare Oberfläche, die sich besonders gut für Projekte eignet, bei denen die Standard-Django-Adminoberfläche nicht ausreicht. django-unfold bietet unter anderem bessere Bedienbarkeit, mehr Flexibilität in der Darstellung von Modellen und eine ansprechende, mobile-optimierte Benutzeroberfläche.

Installation

django-unfold kann einfach über pip installiert werden. Füge es als Abhängigkeit zu deinem Projekt hinzu:

pip install django-unfold

Füge django-unfold in den INSTALLED_APPS in deinen Django-Einstellungen hinzu:

INSTALLED_APPS = [
    # Andere Apps...
    "unfold",
    "django.contrib.admin",
    # Weitere Apps...
]

Migrations ausführen

Da django-unfold seine eigenen Datenstrukturen verwendet, musst du die Datenbank-Migrationen ausführen:

python manage.py migrate

Jetzt sollte django-unfold korrekt installiert sein und bereit zur Nutzung im Admin-Panel sein.

Erstellen von angepassten Admin-Ansichten mit unfold

Mit django-unfold kannst du in deiner admin.py Datei Modelle auf ähnliche Weise registrieren wie mit der Standard-Admin-Oberfläche, jedoch mit zusätzlichen Konfigurationsoptionen für eine ansprechendere Benutzeroberfläche.

Hier ein Beispiel für ein einfaches Modell und die entsprechende Admin-Registrierung mit unfold.

from django.contrib import admin
from unfold.admin import ModelAdmin
from .models import Artikel

@admin.register(Artikel)
class ArtikelAdmin(ModelAdmin):
    list_display = ["titel", "author", "veröffentlichungsdatum"]
    search_fields = ["titel", "inhalt"]
    list_filter = ["author", "veröffentlichungsdatum"]

Anpassungen in der Listenansicht

In der Listenansicht kannst du mit django-unfold Felder und Filter ganz einfach konfigurieren und erweitern. Hier einige weitere Optionen:

  • list_display: Zeigt die angegebenen Felder in der Listenansicht.
  • search_fields: Ermöglicht die Suche innerhalb der definierten Felder.
  • list_filter: Fügt Filteroptionen basierend auf den angegebenen Feldern hinzu.

Mit diesen Optionen kannst du die Daten effizient darstellen und die Benutzerfreundlichkeit der Admin-Oberfläche erhöhen.

Detailansicht anpassen

Ein großer Vorteil von django-unfold ist die Flexibilität in der Detailansicht eines Modells. Du kannst Felder gruppieren, Layouts anpassen und die Benutzerführung verbessern. Hier ein Beispiel:

@admin.register(Artikel)
class ArtikelAdmin(ModelAdmin):
    fieldsets = [
        ("Allgemein", {"fields": ["titel", "inhalt"]}),
        ("Metadaten", {"fields": ["author", "veröffentlichungsdatum"]}),
    ]

Erweiterte Anpassungen mit django-unfold

django-unfold unterstützt auch sogenannte "Inlines", um verwandte Modelle in einem Hauptmodell anzuzeigen. Dies ist nützlich, wenn du z. B. Kommentare in der Artikel-Ansicht integrieren möchtest.

from django.contrib import admin
from unfold.admin import ModelAdmin
from unfold.admin import TabularInline
from .models import Kommentar, Artikel

class KommentarInline(TabularInline):
    model = Kommentar
    extra = 1

@admin.register(Artikel)
class ArtikelAdmin(ModelAdmin):
    inlines = [KommentarInline]

Hier wird ein Inline-Formular zur Eingabe von Kommentaren in der Detailansicht eines Artikels hinzugefügt, was die Interaktion mit verknüpften Daten erleichtert.

Zusätzliche Funktionen und Styling

django-unfold ermöglicht es dir, benutzerdefinierte CSS- und JavaScript-Dateien einzubinden, um das Styling der Admin-Ansichten weiter anzupassen. Dazu musst du die gewünschten Dateien im static-Ordner deines Projekts hinterlegen und sie über die Admin-Ansichten laden.

Beispiel:

class ArtikelAdmin(ModelAdmin):
    class Media:
        css = {"all": ("css/custom_admin.css",)}
        js = ("js/custom_admin.js",)

Fazit

django-unfold bietet eine umfassende Lösung für eine verbesserte und moderne Django-Adminoberfläche. Die flexiblen Anpassungsmöglichkeiten und das ansprechende Design helfen, das Admin-Panel intuitiver und benutzerfreundlicher zu gestalten.