关于组合几个 django 模板的建议

Advice about composing several django templates

我正在使用 Django 开发 Web 应用程序,但我们在设计方面遇到了难题。

我们为每个屏幕制作了一个模板,但现在我们发现屏幕上的某些信息部分在不同的屏幕上重复出现。例如,当要显示一个人的个人数据时,您可以同时显示该人的其他数据,但不能显示个人数据(例如财务数据)。

我的直觉告诉我,我们应该寻找一种解决方案,我们可以在其中制作我们可以组合、组合和连接的小模板,我们还应该制作不同的视图或函数,这些视图或函数将 return 自己的相关模板每一个。

因此,person_data() 将 return 呈现的模板显示名称、姓氏、地址等...并且 financial_data() 将 return 呈现的模板显示工资、银行账户等...之后,理想的事情是将两者连接起来或将它们插入到更宽的模板中一起展示所有这些。

<html>
    ...
    {# Html code here #}
    ...
    {# person_data template #}
    ...
    ...
    {# financial_data template #}
    ...
    {# Html code here #}
    ...
</html>

所以我一如既往地在网上做了一些研究,我发现:

https://docs.djangoproject.com/en/dev/ref/templates/builtins/#include

a link 描述了如何使用 include 在另一个模板中插入模板文件:

{% include "foo/bar.html" %}

您还可以使用 python 函数中的变量和路径名,或者使用带有 render 方法的对象:

{% include template_name %}

所以我们可以通过这种方式使用所有这些来组合、连接、组合和操作模板。我们可以选择一个包含其他模板的模板,并将所有模板的上下文传递给它(我想,我没有测试任何东西)。但我不知道我的方向是否正确,或者这是否是最好的方法。我会很感激一些建议。

我还在 Whosebug 中发现了另一个有趣的话题: How do you insert a template into another template?

我的想法是拥有在网络的不同位置重复使用的小模板,并以类似 Unix 的风格组合它们,这样我就会拥有可以一次又一次使用的小视觉片段,从而节省大量时间编写代码。

请多多指教。 提前致谢

是的,这是正确的做法。我认为最好的解决方案是结合 {% include %}{% extend %},这将允许您从基本模板继承(通过扩展),并从其他模板中包含您想要的部分(通过包含)。

您最终会得到一个基本模板,一个用于页眉、页脚、正文部分等的模板。

您可能还想了解更多相关信息here and here