Geo*_*gie 11 python django templates include extend
为了更清楚地说明我的问题,我们假设我有一个包含内容的include.html模板:
{% block test_block %}This is include{% endblock %}
Run Code Online (Sandbox Code Playgroud)
我有另一个名为parent.html的模板,内容如下:
This is parent
{% include "include.html" %}
Run Code Online (Sandbox Code Playgroud)
现在我创建一个名为child.html的模板,它扩展了parent.html:
{% extends "parent.html" %}
{% block test_block %}This is child{% endblock %}
Run Code Online (Sandbox Code Playgroud)
我的想法是,在渲染child.html时,child.html中的test_block可以覆盖include.html中的test_block.根据我的理解,当包含模板时,它将按原样包含在内.所以在我的情况下,我认为parent.html等于:
This is parent
{% block test_block %}This is include{% endblock %}
Run Code Online (Sandbox Code Playgroud)
所以child.html应该能够覆盖test_block.但看起来它不能.为什么?有解决方法吗?
Ber*_*Sed 13
当您包含模板时,它会呈现模板,然后包含呈现的内容.
来自django文档:
include标记应该被视为"渲染此子模板并包含HTML"的实现,而不是"解析此子模板并将其内容包含在内,就好像它是父类的一部分".这意味着包含的模板之间没有共享状态 - 每个包含都是完全独立的渲染过程.
解决方法是让子模板扩展包含的模板而不是包含模板.然后,包括子模板.
| 归档时间: |
|
| 查看次数: |
3510 次 |
| 最近记录: |