将当前类应用于django模板中的导航元素的干燥方法

Lak*_*sad 5 django django-templates

假设每个导航中都有导航,nav1,nav2,nav3和许多子窗体.

对于css效果,您需要应用于class=current当前选定的导航.

干燥的方法是什么?

对于子窗体,您可以在基本模板中检查request.get_full_path是否与subnav引用的url相同.

怎么能让它干燥导航呢.

Chr*_*lor 2

在您的方法中,您添加一个类来表示元素本身的活动导航元素,您可以将活动导航元素的名称从您的视图添加到上下文中。然后,使用一些 javascript 将current类添加到适当的元素。

例如,如果您有以下导航元素:

<a id="home" href="#">Home</a>
<a id="about" href="#">About</a>
Run Code Online (Sandbox Code Playgroud)

在你的视图中,添加一个上下文变量current,通过 id 来表示当前 nav 元素的 id:

return render_to_response('template.html',
                          {'current': 'home'})
Run Code Online (Sandbox Code Playgroud)

然后在 javascript 中(此处显示 jQuery):

$("#{{ current }}").addClass('current')
Run Code Online (Sandbox Code Playgroud)

这将被评估为:

$("#home").addClass('current')
Run Code Online (Sandbox Code Playgroud)

这反过来会将您的 #current CSS 应用到 home 元素。

另一种方法是向标记添加一个类body,用于标识当前活动的导航菜单。然后在 css 中,为每个主体类定义样式,突出显示相应的导航项。然后,您的模板将current变量直接插入到主体类列表中,并且不需要 JavaScript。