五、html中的模板继承
extend模板继承
到⽬前为⽌,我们的模板范例都只是些零星的 HTML ⽚段,但在实际应⽤中,你将⽤ Django 模板系统来创建整个 HTML 页⾯。 这就带来⼀个常见的 Web 开发问题: 在整个⽹站中,如何减少共⽤页⾯区域(⽐如站点导航)所引起的重复和冗余代码?Django 解决此类问题的⾸选⽅法是使⽤⼀种优雅的策略—— 模板继承 。
本质上来说,模板继承就是先构造⼀个基础框架模板,⽽后在其⼦模板中对它所包含站点公⽤部分和定义块进⾏重载。
1、⾸先我们定义⼀个基础模板:base.html
{% load staticfiles %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>liaochao's Django</title>
<script src="{% static 'service-worker.js' %}"></script>
</head>
<body>
<h1>我是顶部菜单</h1>
<div>
{% block content %}
{% endblock %}
</div>
</body>
</html>
2、我们将login.html当做⼦模板,继承base.html有的属性。
{% extends "base.html" %}
{% block content %}
<!-- html只也可以直接传⼊list并且切⽚-->
<h1> {{ a.0 }} </h1>
{%  for items in obj_list %}
<div>
{% if items.username == 'liaochao' %}
<!-- ⼩写变⼤写-->
<span id="test">{{ items.username|upper }}</span>
<!--得到的结果加5 -->
<span>{{ items.password|add:5 }}</span>
{% endif %}
</div>
{% endfor %}
{{ test }}
<!-- 字符串切割-->
django项目实例
<br>{{ test|cut:' ' }}</br>
<!-- 原⽣时间格式-->
<br>{{ d }}</br>
<!-- 简化处理过后-->
{{ d|date:'Y-m-d' }}
{% load my_tags %}
<p>{{ test|filter_func:'666' }}</p>
<!-- 可以处理多个参数-->
<p>{% simple_func 'a' 'b' 'c'  %}</p>
{% endblock %}
此时我们查看页⾯,可以发现login页⾯⼀直都在,并且加了⼀⾏顶部菜单 字样
这样每个模板只包含对⾃⼰⽽⾔ 独⼀⽆⼆ 的代码。 ⽆需多余的部分。 如果想进⾏站点级的设计修改,仅需修改 base.html ,所有其它模板会⽴即反映出所作修改。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。