锁定老帖子 主题:Django中的模板继承与现实中的房子
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-12-30
最后修改:2009-12-30
版权所有 SinFrancis http://mdev.cc {%block middle%} {%endblock%} {%block middle%} 這個是中間的數據--{{name}} {%endblock%} {%block middle%} <div style="background:green"> {{block.super}} <Br/> <h3>這個是Child2自己的內容</h3> </div> {%endblock%} <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title>{%block title%}{%endblock%}</title> </head> <body> <!--包含頭文件--> {%block header%} {%include 'header.html'%} {%endblock%} <!--中間數據塊--> {%block middle%} {%endblock%} <!--這個是父模版中的內容--> {%block myContent%} 這個就是父模板的內容,如果你想調用這個內容,請使用block.super {%endblock%} <!--包含底部文件--> {%block footer%} {%include 'footer.html'%} {%endblock%} {%block test%} {%endblock%} </body> </html> {%extends "base.html"%} {%block title%} 這個就是標題 {%endblock%} {%block middle%} 這個是中間的數據--{{name}} {%endblock%} {%block myContent%} {{block.super}} {%endblock%} {%extends "child.html"%} {%block title%} {{block.super}}-這個是新加的標題 {%endblock%} {%block middle%} <div style="background:green"> {{block.super}} <Br/> <h3>這個是Child2自己的內容</h3> </div> {%endblock%} {%block myContent%} <div style="background:#336699"> {{block.super}} </div> {%endblock%} def extend(request): name = "LOLI" return render_to_response("child.html",locals()); def extend2(request): name = "LOLI2" return render_to_response("child2.html",locals());
3、如果发觉自己在多个模板之间拷贝代码,你应该考虑将该代码段放置到父模板的某个 {% block %} 中。
4、如果需要获得父模板中代码块的内容,可以使用 {{ block.super }} 变量。如果只想在上级代码块基础上添加内容,而不是全部重载,该变量就显得非常有用了。
5、不可同一个模板中定义多个同名的 {% block %} 。存在这样的限制是因为block 标签的工作方式是双向的。也就是说,block 标签不仅挖了一个要填的坑,也定义了在 父 模板中这个坑所填充的内容。如果模板中出现了两个相同名称的{% block %} 标签,父模板将无从得知要使用哪个块的内容。
6、{% extends %} 对所传入模板名称使用的加载方法和 get_template() 相同。也就是说,会将模板名称被添加到TEMPLATE_DIRS 设置之后。
7、多数情况下, {% extends %} 的参数应该是字符串,但是如果直到运行时方能确定父模板名,这个参数也可以是个变量。这使得你能够实现一些很酷的动态功能。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
浏览 2288 次