首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >django模板:包含和扩展

django模板:包含和扩展
EN

Stack Overflow用户
提问于 2009-09-11 04:08:39
回答 4查看 184K关注 0票数 118

我想在2个不同的基础文件中提供相同的内容。

所以我试着这样做:

page1.html:

代码语言:javascript
复制
{% extends "base1.html" %}
{% include "commondata.html" %}

page2.html:

代码语言:javascript
复制
{% extends "base2.html" %} 
{% include "commondata.html" %}

问题是我似乎不能同时使用扩展和包含。有什么方法可以做到这一点吗?如果不是,我怎样才能做到这一点呢?

commondata.html覆盖在base1.html和base2.html中指定的块

这样做的目的是提供pdf和html格式的相同页面,其中格式略有不同。然而,上面的问题简化了我正在尝试做的事情,如果我能得到一个答案,它就会解决我的问题。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-09-11 04:13:47

当您使用扩展模板标记时,您是说当前模板扩展了另一个模板--它是一个子模板,依赖于父模板。Django将查看您的子模板,并使用其内容填充父模板。

您希望在子模板中使用的所有内容都应该在块中,Django使用这些块来填充父模板。如果希望在子模板中使用include语句,则必须将其放在块中,以便Django理解它。否则,它就没有意义,Django不知道如何处理它。

Django文档中有几个使用块替换父模板中的块的非常好的示例。

https://docs.djangoproject.com/en/dev/ref/templates/language/#template-inheritance

票数 120
EN

Stack Overflow用户

发布于 2017-05-10 22:29:13

这将为您做好准备:将include标记放在块部分内。

page1.html:

代码语言:javascript
复制
{% extends "base1.html" %}

{% block foo %}
   {% include "commondata.html" %}
{% endblock %}

page2.html:

代码语言:javascript
复制
{% extends "base2.html" %}

{% block bar %}
   {% include "commondata.html" %}
{% endblock %}
票数 38
EN

Stack Overflow用户

发布于 2009-09-11 05:21:25

更多关于为什么它对我不起作用的信息,以防它能帮助未来的人:

它不工作的原因是django中的{% include %}不喜欢花哨的撇号之类的特殊字符。我试图包含的模板数据是从word粘贴过来的。我必须手动删除所有这些特殊字符,然后才能成功地包含这些字符。

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1408925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档