Django:有没有更好的方法来粗体当前页面链接

2023-11-27

我有一个包含链接列表的 base.html 模板。

Example:

   <div id="sidebar1">
        <ul>
        <li><a href="/" title="">Index</a></li>
        <li><a href="/stuff/" title="" class="current">Stuff</a></li>
        <li><a href="/about/" title="">About Me</a></li>
        <li><a href="/contact/" title="">Contact Me</a></li>
    </div>

然后我在views.py 中为每个index.html、stuff.html、about.html 和contact.html 定义了一个定义。这些模板中的每一个都只是从 base.html 模板派生并设置各自的标题和内容。

我的问题是关于上面的/东西我有一个类=“当前”。

我想让我所在的当前页面具有该类属性。

我可以在每个视图中设置不同的变量,例如 current_page="about",然后在模板中与{% ifequal %}在每个链接的每个类元素中,但这似乎是重复的工作(因为有额外的视图变量)。

有没有更好的办法?也许如果有一种方法可以获取模板自动填充的视图函数名称,我就不需要设置额外的变量?而且看起来确实有很多 ifequals。


这是一种优雅的方法,我从某个地方复制了它,我只希望我能记住在哪里,这样我就可以把功劳归给他们。 8-)

我分配一个id我的每个页面(或某个部分中的所有页面)如下所示:

In index.html:    <body id='section-intro'>...
In faq.html:      <body id='section-faq'>...
In download.html: <body id='section-download'>...

然后一个id对于相应的链接:

<li id='nav-intro'><a href="./">Introduction</a></li>
<li id='nav-faq'><a href="./faq.html">FAQ</a></li>
<li id='nav-download'><a href="./download.html">Download</a></li>

在 CSS 中我设置了这样的规则:

#section-intro #nav-intro,
#section-faq #nav-faq,
#section-download #nav-download {
    font-weight: bold;
    /* And whatever other styles the current link should have. */
}

因此,这以一种主要是声明性的方式来控制当前页面所属链接的样式。您可以在此处查看它的实际效果:http://entrian.com/source-search/

设置完成后,这是一个非常干净且简单的系统,因为:

  • 您无需在链接中搞乱模板标记
  • 你最终不会使用大丑陋switch陈述或if / else / else声明
  • 将页面添加到某个部分即可正常工作 [TM]
  • 改变事物的外观只意味着改变 CSS,而不是标记。

我没有使用 Django,但这个系统可以在任何地方使用。在您的情况下,您“设置各自的标题和内容”,您还需要设置body id,并且不需要其他 Django 标记。

这个想法也很容易扩展到其他情况,例如。 “我希望除了下载页面本身之外,每个页面的侧边栏中都有一个下载链接。”你可以在 CSS 中这样做:

#section-download #sidebar #download-link {
    display: none;
}

而不必将条件模板标记放入侧边栏 HTML 中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django:有没有更好的方法来粗体当前页面链接 的相关文章

随机推荐