Django(part14)--模板的继承

学习笔记,仅供参考,有错必纠


模板


模板的继承


模板继承可以使父模板的内容重用,子模板直接继承父模板的全部内容并可以覆盖父模板中相应的块(block).


  • block标签
    • block标签标识出哪些块(block)在子模块中是允许被修改的
    • block标签:在父模板中定义,在子模板中覆盖

  • 语法

父模板:

{% block block_name %}
此模板块可以被子模板重新定义的同名块覆盖
{% endblock block_name %}

子模板:

{% extends '父模板名.html' %}
{% block block_name %}
重新定义的同名块
{% endblock %}

  • 图示


举个例子


父模板(father_page1.html)

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>首页</title>
		<style>
			/* 基础样式设置 */
			body,h1,h2,h3,h4,h5,h6,p,ul,ol{
				margin:0;
				padding:0;
				border:0;
				list-style:none;
			}
			/* 整体 */
			#container{
				width:1000px;
				margin:0 auto;
			}
			/* 顶部 */
			#top{
				width:1000px;
				height:100px;
				background:yellow;
			}
			/* 主体 */
			#main{
				display:flex;
				justify-content:space-between;
			}
			/* 主体左侧 */
			#main #main-left{
				width:500px;
				height:500px;
				background:pink;
			}
			/* 主体右侧 */
			#main #main-right{
				width:500px;
				height:500px;
				background:blue;
			}
			/* 底部 */
			#foot{
				width:1000px;
				height:100px;
				background:gray;
			}
		</style>
	</head>
	<body>
		<!-- 整体 -->
		<div id="container">
			<!-- 1.顶部 -->
			<div id="top">
				我是顶部
			</div>
			<!-- 2.中间主体部分 -->
       {% block myBlockName %}
			<div id="main">
                <h1>父模板的内容</h1>
                <br>
                <br>
                <br>
                <br>
                <br>
                <br>
                <br>
			</div>
       {% endblock myBlockName %}
			<!-- 3.底部 -->
			<div id="foot">
				我是底部
			</div>
		</div>
	</body>
</html>

子模板(son_page1.html)

{% extends 'father_page1.html' %}
{% block myBlockName %}
			<div id="main">
                <h2>Welcome to Anhui University of Finance and Economics</h2>
                <br>
                <br>
                <br>
                <br>
                <br>
                <br>
                <br>
			</div>
{% endblock %}

views.py

def father_page1(request):
    return render(request, "father_page1.html")

def son_page1(request):
    return render(request, "son_page1.html")

urls.py

urlpatterns = [
    path('admin/', admin.site.urls),
    re_path(r'father_page1/$', views.father_page1),
    re_path(r'son_page1/$', views.son_page1),
]

向http://127.0.0.1:8000/father_page1/发起请求:


向http://127.0.0.1:8000/son_page1/发起请求:

猜你喜欢

转载自blog.csdn.net/m0_37422217/article/details/106818413