python - 子模板未在 Django 中呈现

标签 python django

enter image description here

在我的 django View 中,我有:

def index(request):
    return render_to_response('index.html',context_instance=RequestContext(request))

在我的基本模板(index.html)中,我有:

 <div class="col-lg-5 col-sm-6">
                <hr class="section-heading-spacer" />
                <div class="clearfix"></div>
                <h2 class="section-heading">Here Are The Details:</h2>
                    {% block 'body' %}
                    {% endblock %}
            </div>

我的“ipsum.html”子模板有:

{% extends 'index.html' %}
{% block 'body' %}
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum</p>
{% endblock %}

当我运行它时,:

{% block 'body' %}
{% endblock %}

消失了,但在 index.html 中没有任何东西可以替代它。我做错了什么?

最佳答案

根据上面显示的代码,您似乎没有使用 'ipsum.html' 呈现响应。您是否打算改为执行此操作(请注意 'ipsum.html')?

def index(request):
    return render_to_response('ipsum.html', context_instance=RequestContext(request))

或者您可能需要另一种 View 吗?

def ipsum(request):
    return render_to_response('ipsum.html', context_instance=RequestContext(request))

编辑

关于您的评论,您可以使用任意数量的子模板来扩展模板。例如,您可能有以下三个文件:

base.html

<html>
  <body>
  {% block 'body' %}
    <p>testing 1</p>
  {% endblock %}
  </body>
</html>

child1.html

{% extends 'base.html' %}
{% block 'body' %}
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum</p>
{% endblock %}

直接第二个 child 的延期

child2.html

{% extends 'base.html' %}
{% block 'body' %}
<p>Quo usque tandem abutere, Catilina, patientia nostra?</p>
{% endblock %}

由于我们没有向 child2.html 添加任何新 block ,因此首选方法是从 base.html 继承。

另一个可能的第二个 child 延期

但是,如果我们像这样向 child1.html 添加另一个 block (请注意 child1.html 现在有两个 block ):

child1.html

{% extends 'base.html' %}
{% block 'body' %}
<p>Lorem ipsum . . .</p>
{% endblock %}
{% block second_p %}
<p>Another paragraph . . .</p>
{% endblock %}

我们现在可能想扩展第二个子元素,因为我们已经在该模板中内置了第二个 block ,但该 block 未内置于 base.html 中:

child2.html

{% extends 'child1.html' %}
{% block 'body' %}
<p>Quo usque tandem abutere, Catilina, patientia nostra?</p>
{% endblock %}
{% block second_p %}
<p>And still another . . .</p>
{% endblock %}

现在您的 View 可以使用这些 html 文件中的任何一个来呈现您的模板。下面是分别渲染这三个模板的三个 View :

def index(request):
    return render_to_response('base.html', context_instance=RequestContext(request))

def child1(request):
    return render_to_response('child1.html', context_instance=RequestContext(request))

def child2(request):
    return render_to_response('child2.html', context_instance=RequestContext(request))

关于python - 子模板未在 Django 中呈现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27350084/

相关文章:

python - Python中函数定义后的变量赋值

python - 通过过滤第一列/数组创建一个新的 2 列 numpy 数组

django - 如何在Django中的模型上使用error_messages

python - NoReverseMatch for get_absolute_url() 新手问题

python - Django 和 Pymongo - 获取多个输入并更新所有对象中的单个字段

python - 即使 Anaconda 说它已安装,导入 Numpy 也会导致错误?

python - 更改 python sys.path 的优先级

python - Heroku:找不到命令。在 Virtualenv 上工作

python - 在 Django 中访问查询集数据并对其执行操作

Django - 覆盖保存方法时检查旧值和新值之间的差异