J'ai ma navigation NAV sur mon base.html code>, donc je l'étends sur toutes les autres pages.
Mais j'ai une classe "actif" code> sur la page d'accueil, il reste donc aussi actif dans toutes les autres pages. <ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link active" href="http://127.0.0.1:8000/backend/">
<i class="ni ni-shop text-primary"></i>
<span class="nav-link-text">Dashboard</span>
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="http://127.0.0.1:8000/backend/clientes">
<i class="ni ni-ungroup text-orange"></i>
<span class="nav-link-text">Clients</span>
</a>
</li>
</ul>
3 Réponses :
Envoyer Utilisez une variable comme suit: p> <ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link {{ dashboard }}" href="http://127.0.0.1:8000/backend/">
<i class="ni ni-shop text-primary"></i>
<span class="nav-link-text">Dashboard</span>
</a>
</li>
<li class="nav-item">
<a class="nav-link {{ clients }}" href="http://127.0.0.1:8000/backend/clientes">
<i class="ni ni-ungroup text-orange"></i>
<span class="nav-link-text">Clients</span>
</a>
</li>
</ul>
Cela nécessite d'ajouter des valeurs de contexte spécifiques à chaque vue ... vraiment pas sec. Et les chances d'affrontements de nom avec cette mise en œuvre exacte sont très élevées.
] p> dans votre context_file.py p> Vous pouvez écrire un fichier JS personnalisé et ajouter votre base HTML. Dans ce fichier JS, vous pouvez détecter l'URL et décider du volet actif. Après cela, vous pouvez ajouter une classe active au volet de liste. P> p> paramètres.py code>
Oui, je pense que le fichier JS sera le meilleur choix pour résoudre ce problème. Merci!
Veuillez ne pas vous conseiller d'utiliser des processeurs de contexte pour autre chose que d'injecter des valeurs simples. Les processeurs contextuels sont coûteux et sont systématiquement invoqués pour tous les modèles (même ceux qui n'en ont pas besoin), ainsi que des choses apparaissent automatiquement dans le contexte qui est un enfer de maintenance.
En outre, vous n'avez certainement pas besoin de JS pour savoir où vous êtes, la requête code> a déjà toutes les infos pertinentes.
@ JoãoDesousa Je vous suggère très fortement de choisir une meilleure solution - une étiquette de modèle personnalisée vous vient à l'esprit.
Il n'y a pas de réponse unique - toutes les réponses à votre question, cela dépend vraiment de la structure de votre projet, de la hiérarchie de l'URL, etc. mais généralement, les meilleures solutions sont soit une étiquette de modèle personnalisée prenant la demande comme argument (et / ou Autres variables de contexte ou constantes ordinaires, en fonction de la logique de votre propre projet) pour calculer la "section" actuelle et rendre la barre de navigation en conséquence. P>
Est-ce que cela répond à votre question? Django - mettre en surbrillance la navigation basée sur la page actuelle?
@Mihait je l'ai déjà essayé mais ça ne marche pas.
'ça ne marche pas'. Qu'est-ce qui ne fonctionne pas exactement? Quoi qu'il en soit, c'est une ancienne question / réponse. Votre situation actuelle pourrait différer légèrement, mais la logique reste la même. Je suis sûr qu'il y a des dizaines de réponses sur le net sur la manière de résoudre cette exigence