继承模板继承的了解
在同一个网页中有多个选项栏,不同的子网页中除了主体内容不一样,其网页的上面和下面部分还是一样的,如下图点击‘电影’栏和‘电视剧’栏后发现只有主体内容发生改变,如果要实现这俩个网页完全可以重复的敲页面中的非主体内容,但是如果要修改页面内容则需要重复的修改n次,’继承‘的出现解决了这个问题。
模板继承的学习
模板继承可以使父模板的内容重用,子模版直接继承父模板的全部内容并可以覆盖父模板中相应的块。
语法—父模板中:
1.定义父模板中的块block标签
2.标识出哪些在子模版中是允许被修改的
3.block标签:在父模板中定义,可以在子模版中覆盖
语法—子模版中:
1.继承模板extends标签(写在模板文件的第一行)
例如{% entends ‘base.html' %}
2.子模版 重写父模板中的内容快
{% block block_name %}
子模版用来覆盖父模板中 block_name 块的内容
{% endblock blocl_name%} (切记一定要写endblock)
举例实现
在urls中先定义方法:
def base_view(request):
return render(request, 'base.html')
def music_view(request):
return render(request, 'music.html')
def sport_view(request):
return render(request, 'sport.html')
实现主页面base.html页面:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
{% block mytitle %} # 定义继承,子模块中的标题可以修改
<title>主页</title>
{% endblock %}
</head>
<body>
<a href="/music_index">音乐频道</a>
<a href="/sport_index">体育频道</a>
<br>
{% block info %}
这是主页
{% endblock %}
<br>
<h3>有任何问题联系:10083</h3>
</body>
</html>
实现子模块music.html页面
{% extends 'base.html' %} # 继承父模块的标识
{% block mytitle %}
<title>音乐频道</title>
{% endblock %}
{% block info %}
欢迎来到音乐频道
{% endblock %}
实现子模块sport.html页面
{% extends 'base.html' %} # 继承父模块的标识
{% block mytitle %}
<title>体育频道</title>
{% endblock %}
{% block info %}
欢迎来到体育频道
{% endblock %}
在urls中添加path路径:
path('base_index',views.base_view),
path('music_index',views.music_view),
path('sport_index',views.sport_view)
实现页面如下: