【发布时间】:2015-04-08 19:40:20
【问题描述】:
在 Django 应用程序中,很多基于类的视图都是直接从 urls.py 调用的
url(r'^manage/thing/$',
ListView.as_view(model=Thing,
queryset=Thing.objects.filter(parent=None)),
name='mg_thing_list'),
而且大多数 CBV 没有子类,所以 views.py 几乎是空的。我想根据 URL 突出显示导航栏中的活动部分。例如,/manage/thing/... 的页面应该在导航栏 HTML 中的“事物”项旁边有 class="active"。这样做的最干燥方式是什么?
我想避免仅仅为了将请求添加到模板上下文(标准模板标签解决方案似乎需要)而对 CBV 进行子类化。目前我们以一种愚蠢的方式做到这一点:为每个导航栏项目标签添加一个{% block %},并在每个模板中将相关块设置为class="active"。好像有点浪费。
【问题讨论】:
-
顺便说一句,您可以将
django.core.context_processors.request添加到您的TEMPLATE_CONTEXT_PROCESSORSsetting 以避免您的子类头痛。这是你需要的吗? -
就是这样!谢谢你。 (我接受 @Mikeec3 的带有上下文处理器的答案)
标签: django