子模板函数载入的变量可以在父模板中使用,例:
#Base.html <nav id="topnav" class="f_r"> <ul> {% for category in category_list %} <a href="#" target="_blank">{{ category }}</a> {% endfor %} </ul> <script src="{% static 'js/nav.js' %}"></script> </nav> {% block left_content %}{% endblock %}
index.html
{% extends "base.html" %}
{% load staticfiles %}
{% block left_content %}
<do something>
{ % endblock % }
在index.html对应的函数载入的变量可以直接在Base中使用
def index(request):
try:
category_list = Category.objects.all()
except Exception as e:
logger.error(e)
return render(request, "index.html",{"category_list":category_list})
# 载入到index.html得函数category_list可以直接在Base.html中使用
功能点:
1、模板的规划和设计
2、导航数据获取(分类)
技术点:
1、如何拆分一个模板,如何抽离出base模板,如何规划和设计模板中的block,以及include的使用 (一些比较公用的模块可以单独抽离出来,并通过include调用),比如广告
-
通常把常用的区域做成base.html模板,并在需要改变的区域写入block标记.供其他html文件调用
-
父模板,使用{ % block 设定锁定区域名称 % } { % endblock % }
-
在block和endblock中间是可以被写入的的内容区域
<article> {% block left_content %}{% endblock %} <div class="tit01"> <h3>关注我</h3> <div class="gzwm"> <ul> <li><a class="xlwb" href="#" target="_blank">新浪微博</a></li> <li><a class="txwb" href="#" target="_blank">腾讯微博</a></li> <li><a class="rss" href="portal.php?mod=rss" target="_blank">RSS</a></li> <li><a class="wx" href="mailto:admin@admin.com">邮箱</a></li> </ul> </div> </div> </article>
1、继承模板使用{ % extend 'base.html' % } 2、编辑锁定区域{ % block 设定的名称 %}{ % endblock % } 3、直接调用其他html文件,被调用文件不需设置{ % include 'ad.html' % }
{% extends "base.html" %}
{% load staticfiles %}
{% block left_content %}
<div class="l_box f_l">
{% include "ad.html" %}
<div class="topnews">
<h2>最新文章</h2>
<div class="blogs">
<ul>
<h3><a href="/">住在手机里的朋友</a></h3>
<p>通信时代,无论是初次相见还是老友重逢,交换联系方式,常常是彼此交换名片,然后郑重或是出于礼貌用手机记下对方的电话号码。在快节奏的生活里,我们不知不觉中就成为住在别人手机里的朋友。又因某些意外,变成了别人手机里匆忙的过客,这种快餐式的友谊 ...</p>
</url>
{% endblock %}