如何将内容从 django 中的页面传递到侧边栏?

Posted

技术标签:

【中文标题】如何将内容从 django 中的页面传递到侧边栏?【英文标题】:How do I pass content to a side bar from a page in django? 【发布时间】:2015-10-24 13:38:01 【问题描述】:

我正在用 Django 构建一个网站,我希望拥有主导航栏和一个侧面以获得更详细的信息。

我很乐意对主导航栏进行硬编码,但我希望侧边栏能够反映页面中的各个部分(每个部分都有锚链接)。

我见过提到block.super,但这个例子有点抽象,让我理解如何将它应用到我的情况。

这是我的sidebar:

<div id="sidebar-wrapper">
    <ul class="sidebar-nav">
        <li class="sidebar-brand">
            <a href="#">
                Website Title.
            </a>
        </li>
        %for section in page%
        <li>
            <a href="#section.name">section.name</a>
        </li>
    </ul>
</div>

我需要在我的 base.html 中扩展它吗?或者我是否扩展我的页面模板?

这是我当前 base.html 的正文:

<body>
    % include 'navbar.html' %
    </div>
    <div class="content container">
        <div class="row">
            <div class="col-md-8">
                % block content %
                % endblock %
            </div>
        </div>
    </div>
</body>

对于如何在我的应用中实现这一点,我有点迷茫。我应该如何将子页面的内容传递到导航栏?

【问题讨论】:

当我很好地理解了您的问题时,无需在模板中包含侧边栏。我认为您的模板中只需要两个 forloops。一个 forloop 用于您的链接,一个用于您的部分。顺便说一句:您的代码中缺少 endfor 标记。 @het.oosten 您还需要知道什么?我试图保持干燥,否则我将重复代码。 我认为在这种情况下做两个 forloop 是可以的,因为它们有不同的目的。 【参考方案1】:

您应该在 base.html 中为导航栏编写不同的内容块,并在以下模板文件中覆盖该块。

【讨论】:

我将如何“覆盖”该块? 这里的人 anton-pirker.at/… 用例如可能对你有帮助的例子更好地解释了它。

以上是关于如何将内容从 django 中的页面传递到侧边栏?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 CBV 在我的所有 Django 模板中创建侧边栏?

Django模板侧边栏不能正常渲染

Django 中的 Ajax 侧边栏

如何从侧边栏链接导航到同一页面上的新 bootstrap 4 选项卡?

如何在 WooCommerce 页面上维护 Wordpress 中的侧边栏位置

Django - 如何在 base.html 中传递上下文?