儿童模板没有在Django中呈现

时间:2014-12-08 01:31:31

标签: python django

enter image description here

在我的django视图中,我有:

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中没有任何内容替换它。我做错了什么?

1 个答案:

答案 0 :(得分:1)

根据您在上面显示的代码,您似乎没有使用'ipsum.html'呈现回复。你的意思是这样做(注意'ipsum.html')?

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

或者你可能还需要另一种观点?

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 %}

直接的第二次儿童延伸

<强> child2.html

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

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

另一个可能的第二次儿童延期

但是,如果我们向child1.html添加另一个广告素材(注意child1.html现在有两个块):

<强> child1.html

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

我们现在可能想要扩展第二个子节点,因为我们已经在该模板中内置了第二个块,而这个块没有内置到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 %}

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

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))