python Django 模版继承

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 包含在哪里。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值