-- Django模板的继承
1.意义:减少页面的重复定义,实现页面内容的重用;
2.block标签:在父模板中挖坑,填写通用的内容;
{% block content1 %} # content1是给坑起的名字,容易辨识;
... 填写通用内容;
{% endblock content1%}
3.extends标签:继承父模板的内容,将父模板坑中的通用的内容填到子模板中;
{% extends ‘booktest/base.html’%} # 继承父模板内容;
-- 实际应用模型
-- 父类模板
# 拥有页面的头部与底部;
<!DOCTYPE html> <html> <head> <title>父模板</title> {% block head%} {% endblock %} </head> <body> {% block content1 %} <h1>这里是一个坑!~~~~~~</h1> {% endblock content1%} <hr> <h1>contact</h1> </body> </html>
-- 首页.html
# 仅继承父模板的头部与底部,没有其他会被共用的部分;
{% extends ‘booktest/base.html‘%}
-- 用户页面.html
# 在继承父模板的头部与底部之外,
# 还有一个会被共用的左侧,右侧由两个页面分别来展示分类与内容;
# 所以,在父模板的坑里填写左侧相同部分,以及在右侧再挖一个坑;
{% extends ‘booktest/base.html‘ %} {% block content1 %} <table border=‘1‘> <tr> <td height=‘300‘>用户导航</td> <td>{% block content2%}{% endblock%}</td> <!-- 再挖一个坑,给下级填写 --> </tr> </table> {% endblock%}
-- 用户分类页.html(user1.html)
# 继承上一个用户页面;
# 同时,填用户页面右侧的坑;
{% extends ‘booktest/base_user.html‘ %} {% block content2%} <h1>我来填坑!右侧可以变动的内容1!</h1> {% endblock content2%}
-- 用户内容也.html(user2.html)
# 继承上一个用户页面;
# 同时,填用户页面右侧的坑;
{% extends ‘booktest/base_user.html‘ %} {% block content2%} <h1>我来填坑!右侧可以变动的内容2!</h1> {% endblock content2%}
-- 需要添加的视图函数(views.py)
def inherit(request): # 首页 return render(request, ‘booktest/next.html‘) def base_user(request): # 用户页面 return render(request, ‘booktest/base_user.html‘) def user1(request): # 用户页——分类页 return render(request, ‘booktest/user1.html‘) def user2(request): # 用户页——内容页 return render(request, ‘booktest/user2.html‘)
-- URLconf配置
url(r‘^next/$‘, views.inherit), url(r‘^base_user/‘, views.base_user), url(r‘^user1/‘, views.user1), url(r‘^user2/‘, views.user2),
-- 页面展示情况
# 看附件!
原文:http://13269293.blog.51cto.com/13259293/1971529