我想在 2 个不同的基础文件中提供相同的内容。
所以我正在尝试这样做:
page1.html:
{% extends "base1.html" %}
{% include "commondata.html" %}
page2.html:
{% extends "base2.html" %}
{% include "commondata.html" %}
问题是我似乎无法同时使用扩展和包含。有没有办法做到这一点?如果没有,我该如何完成上述操作?
commondata.html 覆盖在 base1.html 和 base2.html 中指定的 block
这样做的目的是提供 pdf 和 html 格式的相同页面,其中格式略有不同。上面的问题虽然简化了我正在尝试做的事情,但如果我能得到答案,它将解决我的问题。
最佳答案
当你使用扩展模板标签时,你是说当前模板扩展了另一个模板——它是一个子模板,依赖于一个父模板。 Django 将查看您的子模板并使用其内容填充父模板。
您想在子模板中使用的所有内容都应该在 block 中,Django 使用它来填充父模板。如果您想在该子模板中使用 include 语句,您必须将它放在一个 block 中,以便 Django 理解它。否则它就没有意义,Django 也不知道如何处理它。
Django 文档中有一些非常好的使用 block 替换父模板中的 block 的示例。
https://docs.djangoproject.com/en/dev/ref/templates/language/#template-inheritance
关于python - django模板: include and extends,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1408925/