python Django 模版继承

Django模板继承提供了一种高效的方式处理前端代码复用。它类似于面向对象编程中的类,允许在父模板中定义通用部分,子模板继承并实现特定需求。父模板定义了基本布局和两个接口,子模板通过`extends`标签继承,并在`block`内实现内容。注意,`extends`必须位于模板顶部,子模板的代码需置于`block`中。要访问父模板的内容,使用`{{ block.super }}`。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python Django 模版继承

在前端页面开发中。有些代码是需要重复使用的。这种情况可以使用 include标签来实现。也可以使用另外一个比较强大的方式来实现,那就是模版继承。模版继承类似于Python 中的类,在父类中可以先定义好一些变量和方法,然后在子类中实现。模版继承也可以在父模版中先定义好一些子模版需要用到的代码,然后子模版直接继承就可以了。并且因为子模版肯定有自己的不同代码, 因此可以在父模版中定义一个block接口,然后子模版再去实现。

以下是父模版的代码:

{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
	<link rel="stylesheet" href="{% static 'style.css' %}" />
	<title>{% block title %}我的站点{% endblock %}</title>
</head>

<body>
	<div id="sidebar">
		{% block sidebar %}
			<ul>
				<li><a href="/">首页</a></li>
				<li><a href="/blog/">博客</a></li>
			</ul>
		{% endblock %}
	</div>
	<div id="content">
		{% block content %}{% endblock %}
	</div>
</body>
</html>

这个模版,我们取名叫做 base.html ,定义好一个简单的 html骨架,然后定义好两个 block接口,让子模版来根据具体需求来实现。子模板然后通过extends标签来实现,

示例代码如下:

{% extends "base.html" %}

{% block title %}博客列表{% endblock %}

{% block content %}
	{% for entry in blog_entries %}
		<h2>{{ entry.title }}</h2>
		<p>{{ entry.body }}</p>
	{% endfor %}
{% endblock %}

需要注意的是:
extends标签必须放在模版的第一行。
子模板中的代码必须放在block中,否则将不会被渲染。

如果在某个 block 中需要使用父模版的内容,那么可以使用 {{block.super}}来继承。比如上例, {%block title%} ,如果想要使用父模版的 title ,那么可以在子模版的 title block 中使用{{ block.super }} 来实现。

在定义block的时候,除了在block 开始的地方定义这个 block 的名字,还可以在 block结束的时候定义名字。比如 {% block title %}{% endblock title %}。这在大型模版中显得尤其有用,能让你快速的看到 block 包含在哪里。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值