将两个子模板集成并呈现到一个基本模板Djang中

2024-04-26 14:48:59 发布

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

enter image description here

我有一个基本模板(索引.html)和两个儿童模板ipsum和need。我用积木试着把两个孩子整合进基地。你知道吗

基本.html

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

child1.html

{% extends 'base.html' %}
{% block 'body1' %}
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit</p>
{% endblock %}

child2.html

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

如果只有一个街区,我现在明白了我可以在我的视野中呼唤:

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

我该怎么做才能把这两块都填进去索引.html-1个ipsum.html另一个是需要.html吗?你知道吗


Tags: 模板baserequesthtmlbodyneedblockendblock
2条回答

您应该让第一个子代扩展第二个子代,第二个子代将扩展基本html。这就是在django中扩展多个子模板的方法。你知道吗

因此,您的代码应该如下所示:

你知道吗索引.html

<html>
<body>
  {% block 'body1' %}
  {% endblock %}
  {% block 'body2' %}
  {% endblock %}
</body>
</html>

你知道吗ipsum.html

{% extends 'index.html' %}
{% block 'body1' %}
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit</p>
{% endblock %}

你知道吗需要.html

{% extends 'ipsum.html' %}
{% block 'body2' %}
    <p>Quo usque tandem abutere, Catsdsilina, patientia nostra?</p>
{% endblock %}

你知道吗视图.py

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

所以needneed.html将首先被呈现,它将寻找ipsum.html,当ipsum.html被呈现时,它将寻找index.html

或者

如果您想进行包含而不是扩展,我建议您使用Django Sekizai库http://django-sekizai.readthedocs.org/en/latest/。它包括自定义标记,如{% include 'xx.html' %},如果需要,它将在第一个子模板中呈现第二个子模板。你知道吗

干杯, 生物鸟人

下面是一个工作示例:

http://biobirdman.com/stacktest/nestedtemplate/

实现这一点的一种方法是在基本模板中只有一个块,并在每个子模板中重写该块,如:

你知道吗基本.html地址:

<html>
  <body>

      {% block 'content' %} gets overridden {% endblock %}

  </body>
</html>

child1.html:

{% extends 'base.html' %}

{% block 'content' %}

    <h1> Page 1 </h1>
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit</p>

{% endblock %}

child2.html:

{% extends 'base.html' %}

{% block 'content' %}

    <h1> Page 2 </h1>
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit</p>

{% endblock %}

相关问题 更多 >