Django Admin — Artikel im Backend verwalten

In diesem Kapitel lernen Sie, wie Sie Django Admin konfigurieren, um ein Content-Management-Backend zu erhalten, ohne Frontend-Code schreiben zu müssen.


Was ist Admin?

Django AdminEs ist eines der leistungsstärksten integrierten Features von Django: Sie registrieren einfach Modelle, und es generiert automatisch ein vollständiges Admin-Verwaltungssystem.

Das Admin bietet Artikel-CRUD, Suche, Filterung, Paginierung und weitere Funktionen, ohne dass Sie selbst CRUD-Code schreiben müssen.


Superuser erstellen

Zuerst müssen Sie ein Administratorkonto erstellen, um sich im Admin anzumelden:

(venv) $ python manage.py createsuperuser
用户名:admin
电子邮件地址:[email protected]
Password:        # 输入密码(不会回显)
Password (again): # 重复密码
Superuser created successfully.

Besuchen Sie nach dem Starten des Servers http://127.0.0.1:8000/admin/ und melden Sie sich mit dem gerade erstellten Konto an.

(venv) $ python manage.py runserver

Modelle im Admin registrieren

Openblog/admin.py, registrieren Sie die Modelle Post und Category.

Beispiel

# Dateipfad: blog/admin.py
from django.contrib import admin
from .models import Category, Post

# Category-Modell registrieren: Der einfachste Weg zur Registrierung
@admin.register(Category)
class CategoryAdmin(admin.ModelAdmin):
    # Auf der Listenseite angezeigte Spalten
    list_display = ['name', 'slug']

# Artikelmodell registrieren: mit benutzerdefinierter Konfiguration
@admin.register(Post)
class PostAdmin(admin.ModelAdmin):
    # Auf der Listenseite angezeigte Spalten
    list_display = ['title', 'category', 'created_at', 'updated_at']

    # Filterleiste rechts: nach Kategorie und Zeit filtern
    list_filter = ['category', 'created_at']

    # Suchfeld oben: nach Titel und Zusammenfassung suchen
    search_fields = ['title', 'summary']

    # Hierarchische Navigation der Veröffentlichungszeit (Jahr → Monat → Tag)
    date_hierarchy = 'created_at'

    # 20 Datensätze pro Seite anzeigen
    list_per_page = 20

Wichtige Konfigurationsanweisungen für admin.py

KonfigurationselementTypeFunktion
list_displayListeLegen Sie fest, welche Felder auf der Listenseite angezeigt werden
list_filterListeFügen Sie rechts eine Filter-Seitenleiste hinzu
search_fieldsListeSuchfeld oben hinzufügen
date_hierarchyStringNavigation nach Datumshierarchie
list_per_pageZahlenAnzahl der Elemente pro Seite (Standard 100)

Aktualisieren Sie die Admin-Seite, klicken Sie links auf „Posts“, und Sie sehen die vollständige Liste sowie Filter- und Suchfunktionen.


Testdaten über den Admin eingeben

Klicken Sie auf die Schaltfläche „Add Article“ und füllen Sie im Formular Titel, Zusammenfassung und Body-Inhalt aus.

Das Feld category bezieht die Optionen automatisch aus der vorhandenen Category (weil es als ForeignKey festgelegt ist).

Geben Sie mindestens 5 Artikel ein, die verschiedene Kategorien abdecken, damit sich Listen- und Filtereffekte in späteren Kapiteln bequem demonstrieren lassen.

Die Feldreihenfolge im Admin-Formular entspricht der Reihenfolge, in der die Felder in models.py definiert sind. Wenn Sie die Reihenfolge anpassen möchten, können Sie sie in der Admin-Klasse festlegen.fields = ['title', 'category', ...]Die Sortierung explizit angeben.


Rich-Text-Bearbeitung (optionale Erweiterung)

Das standardmäßige body-Eingabefeld ist ein Klartextfeld, was die Eingabe von HTML umständlich macht.

Kann installiert werdendjango-summernoteum einen WYSIWYG-Rich-Text-Editor zu erhalten:

(venv) $ pip install django-summernote

Beispiel

# Dateipfad: blog_project/settings.py
INSTALLED_APPS = [
    # ...
    'django_summernote',   # App registrieren
]

# Unterstütztes Datei-Upload-Größenlimit (Optional)
SUMMERNOTE_CONFIG = {
    'summernote': {
        'width': '100%',
        'height': '480',
    }
}

Dann im Admin das Inhaltsfeld in einen Summernote-Editor ändern:

Beispiel

# Dateipfad: blog/admin.py
from django_summernote.admin import SummernoteModelAdmin

@admin.register(Post)
class PostAdmin(SummernoteModelAdmin):  # SummernoteModelAdmin erben
    list_display = ['title', 'category', 'created_at']
    list_filter = ['category']
    search_fields = ['title', 'summary']
    summernote_fields = ['content']     # Das Inhaltsfeld verwendet einen Rich-Text-Editor.

Beim Bearbeiten von Artikeln ist der Inhaltsbereich jetzt ein voll funktionsfähiger Rich-Text-Editor, mit dem du formatieren, Bilder einfügen und Stile anpassen kannst.

django-summernoteEs ist optional. Wenn du keine Drittanbieter-Bibliothek installieren möchtest, kannst du weiterhin vollständig HTML in das Nur-Text-Feld schreiben. Der restliche Code dieses Tutorials hat nichts damit zu tun, ob Summernote installiert ist.


Die Admin-Oberfläche auf Chinesisch lokalisieren

Wenn du Folgendes in settings.py festlegst:LANGUAGE_CODE = 'zh-hans', wurde die Admin-Oberfläche automatisch auf Chinesisch umgestellt.

In der Modelldefinitionverbose_nameDer Parameter wird für die Feldbeschriftungen im Admin-Formular verwendet.


Kapitelzusammenfassung

In diesem Kapitel hast du das Django-Admin-Backend konfiguriert: einen Superuser erstellt, Modelle registriert, Listenanzeige/Suche/Filterung konfiguriert und optional einen Rich-Text-Editor integriert.

Jetzt kannst du Artikelinhalte im Browser visuell verwalten, ohne die Shell aufrufen zu müssen, um Daten manuell einzugeben.

Weitere Erweiterungen