Heim >Backend-Entwicklung >Python-Tutorial >Wie überschreibe und erweitere ich Django Admin-Vorlagen mit dem AppDirectories Template Loader?

Wie überschreibe und erweitere ich Django Admin-Vorlagen mit dem AppDirectories Template Loader?

DDD
DDDOriginal
2024-11-13 09:02:01213Durchsuche

How to Override and Extend Django Admin Templates with AppDirectories Template Loader?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn