मैंने jpwatts ', 110j ' s देखा है, nivhab है और मार्कस Whybrow के उत्तर , लेकिन वे सभी कुछ में कमी लगती हैं: रूट पथ के बारे में क्या? यह हमेशा सक्रिय क्यों है?
तो मैंने एक और रास्ता बनाया है, आसान, जो "नियंत्रक" को खुद से तय करता है और मुझे लगता है कि यह ज्यादातर बड़ी समस्याओं को हल करता है।
यहाँ मेरा कस्टम टैग है:
## myapp_tags.py
@register.simple_tag
def nav_css_class(page_class):
if not page_class:
return ""
else:
return page_class
फिर, "नियंत्रक" सीएसएस कक्षाओं की आवश्यकता की घोषणा करता है (वास्तव में, सबसे महत्वपूर्ण यह टेम्पलेट की उपस्थिति की घोषणा करता है)
## views.py
def ping(request):
context={}
context["nav_ping"] = "active"
return render(request, 'myapp/ping.html',context)
और अंत में, मैं इसे अपने नेविगेशन बार में प्रस्तुत करता हूं:
<!-- sidebar.html -->
{% load myapp_tags %}
...
<a class="{% nav_css_class nav_home %}" href="{% url 'index' %}">
Accueil
</a>
<a class="{% nav_css_class nav_candidats %}" href="{% url 'candidats' %}">
Candidats
</a>
<a class="{% nav_css_class nav_ping %}" href="{% url 'ping' %}">
Ping
</a>
<a class="{% nav_css_class nav_stat %}" href="{% url 'statistiques' %}">
Statistiques
</a>
...
इसलिए प्रत्येक पृष्ठ nav_css_class
को सेट करने का अपना मूल्य होता है, और यदि यह सेट होता है, तो टेम्पलेट सक्रिय हो जाता है: request
टेम्पलेट संदर्भ की कोई आवश्यकता नहीं, कोई URL पार करने और बहु-URL पेज या रूट पेज के बारे में कोई समस्या नहीं।
<a href="{% url "view:name" %}" {% active_class "view:name" %}>
। आप वैकल्पिक रूप से इसका इस्तेमाल करते हैं उत्पन्न करने के लिए कर सकते हैं बस" active"
मूल्य (पास करकेFalse
एक मौजूदा वर्ग विशेषता को संलग्न करने के लिए टैग के लिए एक दूसरा तर्क के रूप में), लेकिन सबसे एनएवी लिंक के लिए उदाहरण मैं क्या उपयोग है।