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.

Online- und Präsenzkurse zum Thema

Finden Sie interessante und zum Thema passende Kurse

Schulung Python für Fortgeschrittene

Diese Schulung „Python für Fortgeschrittene“ vertieft fortgeschrittene Programmiertechniken in Python, wie objektorientierte Programmierung, funktionale Programmierung und Persistenz. Die Teilnehmer lernen, wie sie komplexe Designs und Muster in Python umsetzen, effiziente Datenverarbeitung durchführen und wissenschaftliche Python-Bibliotheken nutzen können. Die Schulung bietet zudem praxisnahe Einblicke in Datenbanken, Metaklassen, Caching und maschinelles Lernen mit scikit-learn.

5 Tage Vollzeit Online

Nächster Termin: 13. Januar 2025
Preis pro Person: 1900,00 EUR

Rabattaktion: 3 für den Preis von 2!

Django Framework für Fortgeschrittene

Entdecken Sie die fortgeschrittenen Funktionen von Django in unserem intensiven Aufbaukurs. Dieser Kurs richtet sich an Entwickler, die bereits mit den Grundlagen von Django vertraut sind und ihre Fähigkeiten auf das nächste Level bringen möchten. Lernen Sie, wie Sie komplexe Anwendungen mit Docker erstellen, eine CD/CI-Pipeline anlegen, APIs integrieren und das Projekt auf einen Server deployen.

5 Tage Vollzeit Online

Nächster Termin: 10. März 2025
Preis pro Person: 1900,00 EUR

Rabattaktion: 3 für den Preis von 2!

REST Api entwicklen mit Django

In diesem intensiven 5-Tage-Seminar lernen Entwickler, professionelle REST-APIs mit dem Django REST Framework zu erstellen, zu optimieren und zu testen.

5 Tage Vollzeit Online

Nächster Termin: 27. Januar 2025
Preis pro Person: 1600,00 EUR

Rabattaktion: 3 für den Preis von 2!