Django:由模板组成的模板
在我的一个Django模板中,有一段HTML代码在页面的多个地方重复出现。我想知道有没有办法把这段代码放到另一个模板里,然后在需要的地方“调用”这个模板呢?
2 个回答
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})
这样,你就可以在一个模板里渲染另一个模板,而且两者之间的关系非常清晰(父模板对子模板的内容一无所知,也不知道子模板的具体情况)。