前言
今晚简单一写,简单描写了模板的使用,编程愉快。
模板变量
-{{ 变量名 }}
这种类型
模板标签
-
标签语法
{% 标签 %} ... {% 结束标签 %}
-
if 标签
{% if 条件表达式1 %} ...[满足条件就执行,否则不执行,下面同理] {% elif 条件表达式2 %} ... {% else %} ... {% endif %}
-
for标签
- 语法
{% for i in 可迭代对象 %} ...可迭代对象 {% empty %} ...可迭代对象无数据补充的语句[可迭代对象为空的时候] {% endfor %}
- 案例
# views.py中 def for_text(request): # 可迭代对象 list = ['江西','深圳','湖南','广东'] return render(request,'for_text.html',locals())
<!-- for_text.html中 --> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <ol> {% for city in list %} <li> {{city}} </li> {% empty %} <li> 没有城市 </li> {% endfor %} </ol> </body> </html>
模板继承
-
定义
- 和面向对象的继承类似,可以继承父模板的全部内容并可以对父模板继承下来的一些块进行修改
- 实用性:主要是减少重复代码,比如有的网站,不同网页头部与尾部都是不变的内容,而变化的实际上是主体的内容,模板继承就可以减少对不变内容的书写,使代码更加简洁
-
语法
- 父模板定义运行修改块,使用
block
标签,在父模块中定义,可以在子模块中覆盖
{% block block_name %} 父模板块内容,允许子模板块覆盖 {% endblock block_name %}
- 子模板块中继承,标签
extends
,写在模板文件的第一行
{% extends '父模板名称' %} {% block block_name %} 子模块内容,用来覆盖父模块对应块 {% endblock block_name %}
- 父模板定义运行修改块,使用
-
注意事项
- 模板的语法比较弱,所以它没有很智能,空格,符号都可能导致错误,写的时候需要仔细检查
- 可以有多个子模块对应一个父模块,参考面向对象
- 如果子模块不重写,那将完全继承父模块的内容
- 模块继承时,服务端的动态内容无法继承
-
代码示例
<!-- 父模块 --> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>首页</title> </head> <body> <h1 style="background-color: blue;">我是头部</h1> {% block middle%} <h2>我是中间内容</h2> {% endblock %} <h3 style="background-color: brown;">我是底部</h3> </body> </html>
<!-- 子模块 --> {% extends 'index.html' %} {% block middle %} <h2>这是运动版块</h2> {% endblock %}
结语
随便一写,编程快乐