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 Beim Überschreiben einer Vorlage wird die vorhandene Vorlagendatei vollständig ersetzt. Durch Erweitern können Sie Inhalte zu bestimmten Blöcken innerhalb der Vorlage hinzufügen Vorlage.
Herausforderungen mit dem AppDirectories-Vorlagenlader
Der AppDirectories-Vorlagenlader stellt eine Herausforderung dar, wenn Admin-Vorlagen überschrieben und erweitert werden. 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 effektiv um zusätzliche Seitenleisteninhalte Überschreiben und Erweitern der ursprünglichen Vorlage.
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!