我想为页面的每个部分创建单独的模板,如导航,侧栏,登录面板等.Django似乎使用继承而不是组合。我想知道是否支持将模板分成几部分并将模板特定模型传递给每个模板。我想的是:
values = { 'navbar_data'= ... 'sidebar_data'= ... }
{{template.render('navbar',navbar_data)}} {{template.render('sidebar',sidebar_data)}}
答案 0 :(得分:2)
有很多好方法可以做到这一点。
您可以使用内置模板按钮include
。此模板标记允许您使用和重用模板的特定片段。这通常对于代表单个模型并将在整个站点中使用的迷你模板最有用。如果您将其与with
模板标签结合使用,可以制作包含模板中使用的上下文,这将非常有用
或者只是简单地使用block
可能会让您觉得自己正在寻找
最后,您可以使用自定义包含模板标签(https://docs.djangoproject.com/en/1.4/howto/custom-template-tags/#inclusion-tags)来进行更深层次的控制。这些将允许您使用完全自定义的上下文渲染子模板。
答案 1 :(得分:0)
这就是templatetags的用途。您在名为myapp / templatetags / mytags.py的文件中定义标记,然后在模板中执行此操作
{% load mytags %}
{% navbar %} {% sidebar %}
官方文档中有大量有关此内容的信息。