关于编写几个django模板的建议

时间:2015-01-04 18:45:50

标签: python django django-templates django-views

我正在使用Django开发一个Web应用程序,我们遇到了关于设计的两难问题。

我们为每个屏幕制作了一个模板,但是现在我们已经检测到屏幕的某些部分与信息在不同的屏幕上重复出现。例如,当显示某人的个人数据时,您还可以显示有关该人的其他数据,但不会显示个人数据(例如财务数据)。

我的直觉告诉我,我们应该寻找一个解决方案,在这个解决方案中,我们可以创建我们可以编写,组合和连接的小模板,并且我们还应该创建不同的视图或函数,这些视图或函数将返回每个模板的相关模板。

因此, person_data()会返回显示名称,姓氏,地址等的呈现模板...... financial_data()会返回显示的模板工资,银行账户等...在那之后,理想的事情是连接两者或将它们插入更宽的模板中以便一起显示所有这些。

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

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

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

描述如何使用include在另一个模板中插入模板文件的链接:

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

你也可以使用带有路径名的python函数中的变量或带有render方法的对象:

{% include template_name %}

因此,我们可以通过这种方式将所有这些用于组合,连接,组合和操作模板。我们可以选择包含其他模板的那个并将其传递给所有模板的上下文(我想,我没有测试任何东西)。但我不知道我是否有良好的指导,或者这是否是最佳方式。我很感激一些建议。

我还在stackoverflow中找到另一个有趣的线程来讨论这个问题: How do you insert a template into another template?

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

请一些建议。 提前致谢

1 个答案:

答案 0 :(得分:3)

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

你最终会有一个基本模板,标题模板,页脚,身体部位等。

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