以下是我的代码,我想实现菜单默认选中,依次我通过用户当前登录的url是否和需要默认选中的页面菜单的url一致,若一致,则添加class="active”,但为什么我从页面的检查代码中却发现并没有添加成功,而且把data_list打印出来后也没有class属性,是url路径有问题还是字典添加键值对失败,我该如何解决
url路径代码
# 项目管理
path('manage/(?P<project_id>\d+)/dashboard/', manage.dashboard, name='dashboard'),
path('manage/(?P<project_id>\d+)/issues/', manage.issues, name='issues'),
path('manage/(?P<project_id>\d+)/statistics/', manage.statistics, name='statistics'),
path('manage/(?P<project_id>\d+)/file/', manage.file, name='file'),
path('manage/(?P<project_id>\d+)/wiki/', manage.wiki, name='wiki'),
path('manage/(?P<project_id>\d+)/setting/', manage.setting, name='setting'),
PYTHON代码
def manage_menu_list(request):
data_list = [
{'title': '概览', 'url': reverse("dashboard", kwargs={'project_id': request.tracer.project.id})},
{'title': '问题', 'url': reverse("issues", kwargs={'project_id': request.tracer.project.id})},
{'title': '统计', 'url': reverse("statistics", kwargs={'project_id': request.tracer.project.id})},
{'title': 'wiki', 'url': reverse("wiki", kwargs={'project_id': request.tracer.project.id})},
{'title': '文件', 'url': reverse("file", kwargs={'project_id': request.tracer.project.id})},
{'title': '设置', 'url': reverse("setting", kwargs={'project_id': request.tracer.project.id})},
]
for item in data_list:
# 当前用户访问的URL:request.path_info: /manage/4/issues/xxx/add/
if request.path_info.startswith(item['url']):
item['class'] = 'active'
return item
return {'data_list': data_list}
页面模板代码
{% for item in data_list %}
<li class="{{ item.class }}"><a href="{{ item.url }}">{{ item.title }}</a></li>
{% endfor %}
打印出的data_list
[{'title': '概览', 'url': '/manage/(%3FP1%5Cd+)/dashboard/'}, {'title': '问题', 'url': '/manage/(%3FP1%5Cd+)/issues/'}, {'title': '统计', 'url': '/manage/(%3FP1%5Cd+)/statistics/'}, {'title': 'wiki', 'url': '/manage/(%3FP1%5Cd+)/wiki/'}, {'title': '文件', 'url': '/manage/(%3FP1%5Cd+)/file/'}, {'title': '配置', 'url': '/manage/(%3FP1%5Cd+)/setting/'}]