在我的一个Django模板中,我有一大块HTML在页面的几个地方重复。有没有办法我可以单独使用另一个模板,并在必要时“实例化”模板?
答案 0 :(得分:4)
答案 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})
因此,您将获得一个在另一个模板内呈现的模板,这些模板具有完全不同的关注点(父模板对孩子的上下文或孩子本身一无所知)。