ich in diesem Beispiel ein bootstrapnavbar
als Show Umsetzung hereDjango: Wie der Name der Vorlage erhalten gerendert wird
Artikel in einem navbar <li>'s
sind, das „ausgewählt“ Element hat das Attribut class="active"
:
In Django befinden sich diese Elemente in einer Vorlage, die von allen Vorlagen eingeschlossen wird, die die Navigationsleiste anzeigen sollen. Ich denke an es auf diese Weise tun:
<li> <a href="/" class="{% if template_name == "home.djhtml" %}active{% endif %}"> Home </a> </li>
<li> <a href="about/" class="{% if template_name == "about.djhtml" %}active{% endif %}"> About </a> </li>
<li> <a href="contact/" class="{% if template_name == "contact.djhtml" %}active{% endif %}"> Contact </a> </li>
Ich würde gerne wissen, ob es eine eingebaute Möglichkeit, die bekommen template_name
(das heißt, die Vorlage wiedergegeben wird, als zu render_to_response()
weitergegeben, in views.py
)
Sicher, ich könnte eine template_name
Variable render_to_response()
Variable explizit hinzufügen, die das Problem lösen würde. Aber denke an DRY Ich denke, das sollte nicht nötig sein.
Explizit ist besser als implizit :) –
Sie sollten die URLs in Ihren Templates nicht fest codieren (verwenden Sie stattdessen den '{% url%}' TemplateTag), und Sie sollten sich auf URLs und 'request.path' verlassen - keine Template-Namen - um zu prüfen, ob ein Link aktiv ist. –
Danke, dass du @bruno darauf hingewiesen hast, ich werde das ändern. –