- base.html
{% include tools.html %}
- tools.html
{% block ... %}
{% block ... %}
- page.html
{% extends base.html %}
tools.html
中含有一些 {% block %}
标签;tools.html
被 {% include %}
标签引入到了 base.html
中;base.html
被 {% extends %}
标签引入到了 page.html
中;在 page.html
中引用 tools.html
中的标签,进行改写。
page.html
能引用 tools.html
中的普通 html
代码,但是无法对 {% block %}
标签进行改写。
Stack Overflow 上这个问题的第二个答案引用了一段 django
文档中的话:
The include tag should be considered as an implementation of "render this subtemplate and include the HTML", not as "parse this subtemplate and include its contents as if it were part of the parent". This means that there is no shared state between included templates -- each include is a completely independent rendering process.
大意是说 tool.html
在被 {% include %}
引入进 base.html
时就已经被渲染成 html
文本了?
那这样的话,有没有比较方便的替代方案?
tools.html
中的内容除了 base.html
,还有其它地方会用到,所以就被单独写在一个文件里;
但是在其它地方引用的时候会有一点点细微的改动,所以又在其中加入了 {% block %}
标签。
有没有一种比较“优雅”的方式既能保障 tools.html
能被复用,又能比较方便地在复用时进行微调?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.