模板
在 Django 框架中,模板是可以帮助开发者快速生成呈现给用户页面的工具
模板的设计方式实现了我们 MVT 中 VT 的解耦,VT有着 N:M 的关系,一个 V 可以调用任意 T ,一个 T 可以供任意 V 使用
模板处理分为两个过程
加载和渲染
模板主要有两个部分
HTML 静态代码
动态插入的代码段(挖坑,填坑)
模板中的动态代码段除了做基本的静态填充,还可以实现一些基本的运算,转换和逻辑
模板中的变量: 视图传递给模板的数据
遵守标识符规则
语法 {{ var }}
如果变量不存在,则插入空字符串
模板中的点语法 grades grade
字典查询
属性或者方法 grade.gname
索引 grades.0.gname
模板中的小弊端,调用对象的方法,不能传递参数
模板中的标签
语法 {{ tag }}
作用 1.加载外部传入的变量
2.在输出中创建文本
3.控制循环或者逻辑
if
格式:{% if 表达式 %}
语句
{% endif %}
{% if 表达式 %}
语句
{% else %}
语句
{% endif %}
{% if 表达式 %}
语句
{% elif 表达式 %}
语句
{% endif %}
## 结构标签
block
块
用来规划我们的布局(挖坑)
首次出现代表规划
第二次出现,代表填充以前的规划
第三次出现,代表填充以前的规划,默认动作是覆盖
如果不想覆盖,可以添加 {{ block.super }}
这样就实现了增量式操作
{% block header %}
{% endblock %}
{% block banner %}
{% endblock %}
{% block content %}
{% endblock %}
{% block footer %}
{% endblock %}
extends
继承
可以获取父模板中的所有结构
{% extends "base.html" %}
{% block header %}
<h1>hahaahahahah</h1>
{% endblock %}
block + extends
化整为零
include
包含
可以将页面作为一部分,嵌入到其他页面中
include + block
由零聚一
{% extends "home.html" %}
{% block content %}
qiang da
{% endblock %}
{% block header %}
{{ block.super }}
fugai
{% endblock %}
{% block footer %}
{% include 'gooter.html' %}
{% endblock %}
三个标签也可以混合使用
使用 block + extends 搞定的,就尽量不要使用 include