模板块内的 Django CMS 占位符不显示

Posted

技术标签:

【中文标题】模板块内的 Django CMS 占位符不显示【英文标题】:Django CMS Placeholder Within Template Block Not Displaying 【发布时间】:2017-09-19 21:49:15 【问题描述】:

我正在关注this 使用 Django CMS 构建基本博客的教程,但遇到了一个奇怪的行为。当我发现没有在 CMS 的结构部分中创建内容区域时,这一切都开始了。在调查它时,我发现了奇怪的行为。

在这里。

base.html:

<!-- Main Content -->
<div class="container">
    <div class="row">
        <div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
            % block content %% endblock %
        </div>
    </div>
</div>
<hr>

content.html:

% extends "base.html" %
% load cms_tags %

% block content %
    % placeholder content or%
    % endplaceholder %
% endblock content %

以上配置在 CMS 的结构页面上不显示任何内容块。但是,如果我将 base.html sn-p 更改为以下内容,它就可以工作。

base.html:

<!-- Main Content -->
<div class="container">
    <div class="row">
        <div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
                % placeholder content or%
                % endplaceholder %
        </div>
    </div>
</div>
<hr>

有人能告诉我为什么会这样吗?我在 Django 如何处理模板块中缺少什么?在我看来,这两种情况应该被同等对待。然而,结果显然不同。该教程声称我应该更改 content.html 方面。但是,如上图所示,这是行不通的。

感谢任何解释!

【问题讨论】:

两者确实看起来是相同的,并且应该按照我的方式工作。我能想到的唯一想法是您可能正在扩展不同的 base.html。您可以尝试在 content.html 中添加一些基本的 html 以查看它是否被渲染? 我尝试了你的建议,但没有任何效果。玩了一段时间后,我能够解决它。如果有兴趣,请参阅下面的答案。 【参考方案1】:

我能够通过以下修改解决此问题。

base.html:

<!-- Main Content -->
% placeholder content or %
<div class="container">
    <div class="row">
        <div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
            % block content %% endblock %
        </div>
    </div>
</div>
<hr>
% endplaceholder %  

content.html:

% extends "base.html" %
% load cms_tags %

% block content %
% endblock content %

【讨论】:

以上是关于模板块内的 Django CMS 占位符不显示的主要内容,如果未能解决你的问题,请参考以下文章

显示相同占位符内容的 Django-CMS apphook 模板

Django CMS 自动显示正确的占位符插件

“渲染占位符”未出现在 django CMS 模板中

Django-cms haystack 搜索 - 占位符内容

从祖先继承的 Django CMS 模板不识别占位符

在不同的占位符/模板上以不同的方式呈现 Django-CMS 插件