我正在尝试根据用户所在的当前页面更改我的导航链接的事件选择。
我正在尝试做这样的事情:
<li {% if request.get_full_path == {% url profile_edit_personal %} %}class="current"{% endif %}><a href="{% url profile_edit_personal %}">Personal Details</a></li>
或者,我知道我可以定义做这样的事情:
<li class="{% block current %}{% endblock %}"><a href="{% url profile_edit_personal %}">Personal Details</a></li>
并添加一个
{% block current %}current{% endblock %}
到每个相关模板,但如果可能的话,我更喜欢我在第一个示例中尝试实现的内容谢谢!
最佳答案
由于您可能只需要在导航模板中执行一次此操作,因此将所有内容放在一个地方对我来说更有意义。
首先反转你的 url 名称并将它们存储在像 Timmy 建议的变量中,然后简单地在模板中比较它们:
{% url 'about_page' as about %}
...
<ul id="nav">
<li class="{% ifequal request.path about %}active{% endifequal %}"><a href="{{about}}">About</a></li>
...
只需确保您启用了请求上下文处理器,以便您可以访问模板中的请求。通过添加
django.core.context_processors.debug
来做到这一点在您的 TEMPLATE_CONTEXT_PROCESSORS
设置变量。
关于Django 模板 : Comparing current url with {% url xyz %},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7593669/