Py学习  »  Django

解析Django模板时的操作顺序

John Dowling • 4 年前 • 887 次点击  

我试图弄清楚当呈现html模板时,Django如何处理操作顺序。

以下面的例子来说明我想回答的问题。

我有一个基本模板“{%includes%}”包含“{%block%}”语句的一段代码。

此基模板用于“{%extends%}”,并且在此子模板中重写“{%block%}”语句。

公共.html

<div>
{% block content %}{% endblock %}
</div>

基.html

{% include common.html %}

子.html

{% extends 'base.html'%}
{% block content %}
..... some code
{% endblock %}

从我的测试来看,这个块并没有像我预期的那样被重写,我是做错了什么,还是这取决于Django模板解析中的操作顺序。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/49226
 
887 次点击  
文章 [ 1 ]  |  最新文章 4 年前
Daniel Roseman
Reply   •   1 楼
Daniel Roseman    4 年前

这实际上与操作顺序无关,而与 include 标签从 the docs :

include标记应被视为呈现此子模板并包含HTML的实现,而不是解析此子模板并包含其内容,就好像它是父模板的一部分一样这意味着包含的模板之间没有共享状态每个包含都是一个完全独立的呈现过程。

计算块 之前 包括在内这意味着包含来自另一个模板的块的模板将包含具有 已经评估和呈现 -不是可由扩展模板等重写的块。