我想在2个不同的基础文件中提供相同的内容。
所以我试着这样做:
page1.html:
{% extends "base1.html" %}
{% include "commondata.html" %}
page2.html:
{% extends "base2.html" %}
{% include "commondata.html" %}
问题是我似乎不能同时使用扩展和包含。有什么方法可以做到这一点吗?如果不是,我怎样才能做到这一点呢?
commondata.html覆盖在base1.html和base2.html中指定的块
这样做的目的是提供pdf和html格式的相同页面,其中格式略有不同。然而,上面的问题简化了我正在尝试做的事情,如果我能得到一个答案,它就会解决我的问题。
发布于 2009-09-11 04:13:47
当您使用扩展模板标记时,您是说当前模板扩展了另一个模板--它是一个子模板,依赖于父模板。Django将查看您的子模板,并使用其内容填充父模板。
您希望在子模板中使用的所有内容都应该在块中,Django使用这些块来填充父模板。如果希望在子模板中使用include语句,则必须将其放在块中,以便Django理解它。否则,它就没有意义,Django不知道如何处理它。
Django文档中有几个使用块替换父模板中的块的非常好的示例。
https://docs.djangoproject.com/en/dev/ref/templates/language/#template-inheritance
发布于 2017-05-10 22:29:13
这将为您做好准备:将include标记放在块部分内。
page1.html:
{% extends "base1.html" %}
{% block foo %}
{% include "commondata.html" %}
{% endblock %}
page2.html:
{% extends "base2.html" %}
{% block bar %}
{% include "commondata.html" %}
{% endblock %}
发布于 2009-09-11 05:21:25
更多关于为什么它对我不起作用的信息,以防它能帮助未来的人:
它不工作的原因是django中的{% include %}不喜欢花哨的撇号之类的特殊字符。我试图包含的模板数据是从word粘贴过来的。我必须手动删除所有这些特殊字符,然后才能成功地包含这些字符。
https://stackoverflow.com/questions/1408925
复制相似问题