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

Posted

技术标签:

【中文标题】关于编写几个 django 模板的建议【英文标题】:Advice about composing several django templates 【发布时间】:2015-03-02 08:56:18 【问题描述】:

我正在使用 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 %

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

我还在 *** 中发现了另一个有趣的线程,讨论这个: How do you insert a template into another template?

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

请给点建议。 提前致谢

【问题讨论】:

【参考方案1】:

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

您最终将拥有一个基本模板、一个用于页眉、页脚、正文部分等的模板。

您可能还想了解更多关于它的信息here 和 here

【讨论】:

谢谢!我们已经为基本 html 使用了“扩展”,但我们从未使用过“包含”

以上是关于关于编写几个 django 模板的建议的主要内容,如果未能解决你的问题,请参考以下文章

我们如何在 Django 中编写扩展多个父模板的子模板?

如何为访问控制编写 Django 模板标签?

在 django 模板中编写循环时遇到问题

07-Django模板

django 编写我的第一个自定义模板标签和过滤器

如何编写函数/定义以便在 HTML 模板 Django 中呈现?