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
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
| Konfigurationselement | Type | Funktion |
|---|---|---|
| list_display | Liste | Legen Sie fest, welche Felder auf der Listenseite angezeigt werden |
| list_filter | Liste | Fügen Sie rechts eine Filter-Seitenleiste hinzu |
| search_fields | Liste | Suchfeld oben hinzufügen |
| date_hierarchy | String | Navigation nach Datumshierarchie |
| list_per_page | Zahlen | Anzahl 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
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
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