Comment remplacer et étendre les modèles d'administration Django avec le chargeur de modèles AppDirectories ?

DDD
Libérer: 2024-11-13 09:02:01
original
175 Les gens l'ont consulté

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

Remplacer et étendre simultanément les modèles d'administration de Django

Le remplacement des modèles d'administration de Django est un besoin courant pour personnaliser l'interface d'administration. Cependant, vous pouvez être confronté à un dilemme lorsque vous souhaitez à la fois remplacer et étendre un modèle, tout en tirant parti du chargeur de modèles AppDirectories.

Remplacer ou étendre

Dans Django , le remplacement d'un modèle implique le remplacement complet du fichier de modèle existant, tandis que l'extension vous permet d'ajouter du contenu à des blocs spécifiques au sein du modèle.

Défis liés au chargeur de modèles AppDirectories

Le Le chargeur de modèles AppDirectories présente un défi lors du remplacement et de l'extension des modèles d'administration. Lors de l'utilisation de ce chargeur, Django s'attend à ce que le modèle étendu réside dans le même répertoire que le modèle d'origine. Cela peut devenir problématique si les modèles d'administration se trouvent dans une autre application.

Solutions existantes

Chargeur de modèles personnalisés :

La solution recommandée consiste à utiliser un chargeur de modèles personnalisé qui prend en charge l'extension des modèles dans les répertoires d'applications. Un de ces chargeurs est disponible sur DjangoSnippets.org.

Personnalisation du chargeur de modèles de Django :

Une autre option consiste à personnaliser le chargeur de modèles AppDirectories de Django pour permettre l'extension de modèles à partir d'applications spécifiques. Cela implique de créer une classe de chargeur de modèles personnalisée qui hérite du chargeur AppDirectories et de modifier son comportement.

Les plans futurs de Django

Au moment d'écrire ces lignes, Django ne prend pas en charge nativement étendre les modèles à travers les répertoires d'applications. Cependant, il existe un problème ouvert sur GitHub proposant cette fonctionnalité. S'il était mis en œuvre, cela simplifierait considérablement le processus de remplacement et d'extension des modèles d'administration Django.

Exemple d'utilisation avec le chargeur personnalisé :

En utilisant le chargeur de modèles personnalisé mentionné ci-dessus, vous peut implémenter les éléments suivants dans votre modèle :

{% extends "admin:admin/index.html" %}

{% block sidebar %}
    {{block.super}}
    <div>
        <h1>Extra links</h1>
        <a href="/admin/extra/">My extra link</a>
    </div>
{% endblock %}
Copier après la connexion

Ce code étend le modèle d'index d'administration avec du contenu de barre latérale supplémentaire, remplaçant et étendant efficacement le modèle d'origine.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal