如何在django导航栏下拉列表中显示活动链接?

时间:2017-10-07 06:29:03

标签: python django python-2.7 python-3.x django-templates

我有一个带有链接列表的导航栏菜单,我希望在用户在页面上时显示活动链接,到目前为止,我已设法使用没有此类下拉菜单的链接。

enter image description here

但是我似乎无法通过下拉链接以正确的方式使用,如果用户位于下拉链接的页面上,导航栏上的父链接会突出显示。如下所示

enter image description here

非常感谢任何帮助。

4 个答案:

答案 0 :(得分:0)

您可以通过在上下文字典视图中传递变量来完成此操作。

示例:

context['faculties']=True

然后在html中

{% if faculties %}active{% endif %} 

对于每个视图功能,您可以设置要激活的变量。

答案 1 :(得分:0)

您可以非常轻松地在前端完成所有操作,而无需根据URL从后端传递任何内容。

如果你的网址是“/ faculties”,你可以这样做:

 main_recyclerview.addOnItemTouchListener(new RecyclerView.OnItemTouchListener() {
        @Override
        public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e)
        {
            int position=rv.getChildAdapterPosition(rv.findChildViewUnder(e.getX(),e.getY()));

            switch (position)
            {
                case 0:
                {
                    wifi(position);
                    adapter2.notifyDataSetChanged();
                }
                break;

                case 1:
                {
                    sound(position);
                    adapter2.notifyDataSetChanged();
                }
                break;

                case 2:
                {
                    bluetooth(position);
                    adapter2.notifyDataSetChanged();
                }
                break;


            }
            return true;
        }

        @Override
        public void onTouchEvent(RecyclerView rv, MotionEvent e)
        {

        }

        @Override
        public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {

        }
    });

答案 2 :(得分:0)

如果您使用以下名称定义网址:

url('', 'home_view', name='home'),
url('posts/', 'posts_view', name='blog'),
url('contact/', 'contact_view', name='contact'),

您可以在模板中使用以下名称来使if语句起作用:

{% with request.resolver_match.url_name as url_name %}
    <ul id="menu">
        <li class="{% if url_name == 'home' %}active{% endif %}">Home</li>
        <li class="{% if url_name == 'blog' %}active{% endif %}">Posts</li>
        <li class="{% if url_name == 'contact' %}active{% endif %}">Contact</li>
    </ul>
{% endwith %}

这使您免于URL路径重复的麻烦。

答案 3 :(得分:0)

有两种方法:要么管理CSS以突出显示父项(如果其子项中的任何一个处于“活动状态”),要么(以维护成本和DRY损失为代价)测试模板的成员资格:

<li class="dropdown {% if url_name in "neo_app:business,neo_app:IT,neo_app:hospitality" %}
                       active
                    {% endif %}>Faculties</li>