未在Djang中呈现子模板

2024-09-28 21:35:59 发布

您现在位置:Python中文网/ 问答频道 /正文

enter image description here

在我的django看来:

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

在我的基本模板中(索引.html)我有:

^{pr2}$

我的'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 %}

已经消失了,但没有什么能取代它索引.html. 我做错什么了?在


Tags: djangoin模板indexreturnrequestdefhtml
1条回答
网友
1楼 · 发布于 2024-09-28 21:35:59

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

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

或者你需要另一种观点吗?在

^{pr2}$

编辑

关于您的评论,您可以根据需要扩展包含任意多个子模板的模板。例如,您可能有以下三个文件:

基本.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))

相关问题 更多 >