一尘不染

Django-根据当前页面突出显示导航?

django

我正在构建一个包含几个主要部分的webapp。每个部分都有几个子部分。我有一个main_nav.html保存导航栏的文件。HTML使用模板中的{% include ... %}命令将其添加到基于文件base.html。此外,我有几个小节nav文件,每个文件都使用同一{% include ... %}命令添加到任何给定页面。

所有的导航栏都非常简单,只是带有<a href...>标签的文本。

我想突出显示当前主要部分和当前子部分的链接。由于此Web应用程序很大,因此我希望以某种方式完成此操作而不添加特定于页面的信息。另外,随着webapp扩展到包括更多的部分和子部分,我希望它只是“工作”。例如,是否可以通过查看实际使用的URL来完成?我希望可以将其放在nav文件本身中,而不必在每个django视图中加载一些变量或其他内容。

因此,例如,导航看起来像这样:

(main ->)            [Systems][Invoices][Work Orders][Admin]
(system sub-nav ->)  [Owner][Billing][Contacts]

因此,如果我在的Billing部分中Systems,我希望该链接Systems以粗体显示并且该链接Billing以粗体显示(或其他一些简单的突出显示)

要么:

(main ->)                 [Systems][Invoices][Work Orders][Admin]
(Work-Orders sub-nav ->)  [Create New][Outstanding]

如果我在的Outstanding部分中Work Orders,则该链接Work Orders和该链接Outstanding需要突出显示。


阅读 493

收藏
2020-04-02

共1个答案

一尘不染

假设你用render_to_responseRequestContext或使用render的Django 1.3基于类的方法或意见,你必须在你的模板中提供的请求对象。从那里开始,只需访问当前路径并将其与期望值进行比较就很简单了:

<a href="/some/path/to/be/highlighted/"{% if request.path == '/some/path/to/be/highlighted/' %} class="active"{% endif %}>Some Link</a>

在Django 1.3中,我想保存冗余并使用as运算符进行URL查找:

{% url 'some_urlpattern_name' as url %}
<a href="{{ url }}"{% if request.path == url %} class="active"{% endif %}>Some Link</a>

对每个链接根据需要重复。

2020-04-02