【问题标题】:Active nav-item highlighting based on pk passed in url基于 url 传递的 pk 的活动 nav-item 突出显示
【发布时间】:2021-01-29 05:21:20
【问题描述】:

我有 4 个导航项正在根据 Django 模型条目动态生成。

我的模板代码如下:

{% for stockbroker in stockbrokers %}
    <li class="nav-item">
        <a class="nav-link" href="{% url 'broker:display_stocks' stockbroker.id %}" id="nav">{{ stockbroker.broker_name }}
        </a>
    </li>
{% endfor %}

我想根据我在 a 标签 href 的 url 部分中传递的 id 突出显示当前活动的导航。有没有可能做到这一点?

我正在使用 context_processors.py 在 base.html 中生成这些导航链接

from .models import StockBroker


def stockbrokers(request):
    return {'stockbrokers': StockBroker.objects.all()}

【问题讨论】:

    标签: django django-templates


    【解决方案1】:

    if 条件应该适用于此:

    {% for stockbroker in stockbrokers %}
        <li class="nav-item">
            <a class="nav-link {% if stockbroker.id == current_id %}active{% endif %}" href="{% url 'broker:display_stocks' stockbroker.id %}" id="nav">{{ stockbroker.broker_name }}
            </a>
        </li>
    {% endfor %}
    

    注意:current_id(或您喜欢的变量名称)应在上下文中传递。
    上下文是渲染模板时传递的字典,例如:

    def my_view(request):
        # View Code
        return render(request, 'template_name.html', {'current_id': current_id})
    

    【讨论】:

    • 谢谢.. 你能否详细说明一下 current_id (或你喜欢的变量名)应该在上下文中传递。我不清楚我需要如何以及在哪里执行此操作。
    • 我正在使用 context_processors.py 在我的 base.html 中执行此操作。从子页面传递上下文是否有助于突出显示 base.html 中的导航?
    • 刚刚试了一下,它工作正常。非常感谢!
    • @codecrazy46 上下文处理器适用于所有模板,即您可以使用它们轻松地向所有模板添加内容。但是将它们用于需要在视图基础上传递的变量会非常令人困惑,即某些视图可能有也可能没有一些数据。最好为那些传递上下文。 (您的上下文处理器仍然可以正常工作)
    猜你喜欢
    • 2015-08-10
    • 2020-05-15
    • 2019-02-09
    • 1970-01-01
    • 2018-06-27
    • 2012-01-13
    • 1970-01-01
    • 1970-01-01
    • 2021-11-14
    相关资源
    最近更新 更多