Django-Admin-Vorlagen gleichzeitig überschreiben und erweitern
Das Überschreiben der Admin-Vorlagen von Django ist eine häufige Notwendigkeit für die Anpassung der Administrationsoberfläche. Sie können jedoch vor einem Dilemma stehen, wenn Sie eine Vorlage sowohl überschreiben als auch erweitern und gleichzeitig den AppDirectories-Vorlagenlader nutzen möchten.
Überschreiben vs. Erweitern
In Django Das Überschreiben einer Vorlage umfasst das vollständige Ersetzen der vorhandenen Vorlagendatei, während Sie durch Erweitern Inhalte zu bestimmten Blöcken innerhalb der Vorlage hinzufügen können.
Herausforderungen mit AppDirectories Template Loader
Die Der Vorlagenlader von AppDirectories stellt beim Überschreiben und Erweitern von Admin-Vorlagen eine Herausforderung dar. Bei Verwendung dieses Loaders erwartet Django, dass sich die erweiterte Vorlage im selben Verzeichnis wie die Originalvorlage befindet. Dies kann problematisch werden, wenn sich die Admin-Vorlagen in einer anderen Anwendung befinden.
Vorhandene Lösungen
Benutzerdefinierter Vorlagenlader:
Die empfohlene Lösung besteht darin, einen benutzerdefinierten Vorlagenlader zu verwenden, der die Erweiterung von Vorlagen über App-Verzeichnisse hinweg unterstützt. Ein solcher Loader ist auf DjangoSnippets.org verfügbar.
Anpassen des Vorlagenladers von Django:
Eine weitere Option besteht darin, den AppDirectories-Vorlagenlader von Django anzupassen, um das Erweitern von Vorlagen aus bestimmten Apps zu ermöglichen. Dazu gehört das Erstellen einer benutzerdefinierten Template-Loader-Klasse, die vom AppDirectories-Loader erbt, und das Ändern seines Verhaltens.
Djangos Zukunftspläne
Zum jetzigen Zeitpunkt bietet Django keine native Unterstützung Erweitern von Vorlagen über App-Verzeichnisse hinweg. Es gibt jedoch ein offenes Problem auf GitHub, das diese Funktion vorschlägt. Bei Implementierung würde es den Prozess des Überschreibens und Erweiterns von Django-Admin-Vorlagen erheblich vereinfachen.
Beispielverwendung mit benutzerdefiniertem Loader:
Mit dem oben erwähnten benutzerdefinierten Vorlagen-Loader können Sie kann Folgendes in Ihrer Vorlage implementieren:
{% extends "admin:admin/index.html" %} {% block sidebar %} {{block.super}} <div> <h1>Extra links</h1> <a href="/admin/extra/">My extra link</a> </div> {% endblock %}
Dieser Code erweitert die Admin-Indexvorlage um zusätzlichen Seitenleisteninhalt, wodurch die ursprüngliche Vorlage effektiv überschrieben und erweitert wird.
Das obige ist der detaillierte Inhalt vonWie überschreibe und erweitere ich Django Admin-Vorlagen mit dem AppDirectories Template Loader?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!