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