问题描述
我正在尝试根据用户所在的当前页面更改导航链接的活动选择。
I am trying change the active selection of my navigation links based on the current page where the user is at.
我正在尝试执行以下操作:
I am trying to do omething like this:
<li {% if request.get_full_path == {% url profile_edit_personal %} %}class="current"{% endif %}><a href="{% url profile_edit_personal %}">Personal Details</a></li>
或者,我知道我可以定义执行以下操作:
Alternatively, I know I could define do something like this:
<li class="{% block current %}{% endblock %}"><a href="{% url profile_edit_personal %}">Personal Details</a></li>
并添加 {%block current%} current {%endblock%}
到每个相关模板,但是我更喜欢像Im在第一个示例中尝试实现的东西
and add a {% block current %}current{% endblock %}
to each of the relevant templates but I would prefer something like what Im trying to achieve in the first example if possible
谢谢!
推荐答案
由于您可能只需要执行一次此操作(在您的导航模板中),对我来说保留所有内容就更有意义了
Since you'll probably only need to do this once--in your nav template--it makes more sense to me to keep everything in one place.
首先反转您的url名称,并将其存储在Timmy建议的变量中,然后只需在模板中进行比较即可:
First reverse your url names and store them in variables like Timmy suggested, then simply compare them in the template:
{% url 'about_page' as about %}
...
<ul id="nav">
<li class="{% ifequal request.path about %}active{% endifequal %}"><a href="{{about}}">About</a></li>
...
只要确保已启用请求上下文处理器,就可以访问模板中的请求。为此,可在 TEMPLATE_CONTEXT_PROCESSORS
设置变量中添加 django.core.context_processors.debug
。
Just make sure you have your request context processor enabled so you have access to the request in the template. Do this by adding django.core.context_processors.debug
in your TEMPLATE_CONTEXT_PROCESSORS
settings variable.
这篇关于Django模板:将当前网址与{%url xyz%}进行比较的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!