Django:由模板组成的模板

时间:2010-03-25 14:49:05

标签: python html django

在我的一个Django模板中,我有一大块HTML在页面的几个地方重复。有没有办法我可以单独使用另一个模板,并在必要时“实例化”模板?

2 个答案:

答案 0 :(得分:4)

您需要阅读template inheritance

或者您可以使用template composition

通常,继承是一种更好的方式。

答案 1 :(得分:0)

前段时间我遇到了同样的问题,这就是我得到的。

似乎并没有得到很好的记录,但是有一个非常明显的解决方案-在主模板中插入HTML块,然后在其中传递其他模板渲染的结果。

示例:

在主模板(app/main.html)中:

<!-- ... -->

{% autoescape on %}
  {{html}}
{% autoescape off %}

<!-- ... -->

在查看代码中:

from django.template.loader import get_template

def my_view(request, ...):
  # Do stuff...
  context = {'data': 'data'}
  t = get_template('app/partial_template.html')
  html = t.render(context=context)

  return render(request, 'app/main.html', context={'html': html, 'rest_data': 123})

因此,您将获得一个在另一个模板内呈现的模板,这些模板具有完全不同的关注点(父模板对孩子的上下文或孩子本身一无所知)。