Django中的模板继承是一种方法,可以让你在一个基础模板中定义一些通用的内容,然后在其他模板中扩展和重写这些内容。这样可以避免重复编写相同的代码,并提高代码的可维护性。
在Django中,模板继承使用{% extends %}
标签来实现。子模板通过这个标签来继承父模板,然后在子模板中使用{% block %}
标签来重写父模板中指定的块。
例如,假设你有一个基础模板base.html
,其中包含一些通用的内容,如下所示:
<!DOCTYPE html>
<html>
<head>
<title>{% block title %}Default Title{% endblock %}</title>
</head>
<body>
<header>{% block header %}Default Header{% endblock %}</header>
<main>{% block content %}{% endblock %}</main>
<footer>{% block footer %}Default Footer{% endblock %}</footer>
</body>
</html>
在这个模板中,{% block %}
标签定义了一些可以被子模板重写的块,例如title
、header
、content
和footer
。
现在,你可以创建一个子模板child.html
,继承base.html
,并重写其中的一些块,如下所示:
{% extends 'base.html' %}
{% block title %}Child Title{% endblock %}
{% block header %}Child Header{% endblock %}
{% block content %}
<h1>Welcome to the child page!</h1>
{% endblock %}
在这个子模板中,{% extends 'base.html' %}
标签表示这个模板继承自base.html
。然后,我们使用{% block %}
标签来重写父模板中的一些块,例如title
、header
和content
。
当Django渲染这个子模板时,它会将base.html
中的内容和子模板中的内容合并在一起。在这个例子中,合并后的HTML代码如下所示:
<!DOCTYPE html>
<html>
<head>
<title>Child Title</title>
</head>
<body>
<header>Child Header</header>
<main>
<h1>Welcome to the child page!</h1>
</main>
<footer>Default Footer</footer>
</body>
</html>
可以看到,子模板中重写的块已经替换了父模板中的内容,而没有重写的块则保留了父模板中的内容。
总之,Django中的模板继承是一种非常有用的功能,可以帮助你更好地组织和重用你的代码,提高代码的可维护性和可扩展性。
领取专属 10元无门槛券
手把手带您无忧上云