模版template
在Django框架中,模版可以帮助开发者快速生成呈现给用户页面的工具
设计方式实现了我们MVT中VT的解耦(M:Model, V:View,T:Template),VT有着N:M的关系,一个V可以调用任意T,一个T可以供任意V使用
模板处理分为两个过程
加载HTML
渲染数据 render()
模板主要有两个部分
HTML静态代码
模板语言,动态插入的代码段(挖坑,填坑)
模板中的动态代码段除了做基本的静态填充,还可以实现一些基本的运算,转换和逻辑
静态页面:页面数据是本地固定的
动态页面:页面数据来源于后台服务器
模板中的变量:视图传递给模板的数据,遵守标识符规则
语法:{{ var }}
如果变量不存在,则插入空字符串
方法不能有参数
{{ str }}
{{ str.supper }}
{{ str.isdigit }}
{{ dict.key }}
列表,使用索引,不允许负索引
items=['a','b','c']
{{ items.2 }}
模板中的标签
{% tag %}
作用
1.加载外部传入的变量
2.在输出中创建文本
3.控制循环或逻辑
if 语句
格式:
if 单分支:
{% if 表达式 %}
语句
{% endif %}
if 双分支:
{% if 表达式 %}
语句
{% else %}
语句
{% endif %}
if 多分支:
{% if 表达式 %}
语句
{% elif 表达式 %}
语句
{% else %}
语句
{% endif %}
判断true 或false
{% if today_is_weekend %}
<p>happly day</p>
{% endif %}
for 语句
{% for 变量 in 列表 %}
语句1
{% empty %}
语句2
{% endfor %}
当列表为空或不存在的时候,执行empty之后的语句
{{ forloop.counter }}表示当前是第几次循环,从1数数
{% for item in todo list %}
<p>{{ forloop.counter }}:{{ item }}</p>
{%endfor %}
{{ forloop.counter0}}表示当前是第几次循环,从0数数 {{ forloop.revcoúnter}}表示当前是第几次循环,倒着数数,到1停{{ forloop.revcounter0}}表示当前第几次循环,倒着数,到8停{{ forloop.first }}是否是第一个 布尔值
{% for object in objects %}
{% if forloop.first %}
<li class="first">
{% else %}
<li>
{% endif %}
{{ object }}
</li>
{% endfor %}
注释:
{#单行注释被注释掉的内容#}
多行注释
{% comment %}
内容
{% endcomment %}
过滤器:
{{ var|过滤器 }}
作用:在变量显示前修改
add {{ valueladd:2 }}没有减法过滤器,但是加法里可以加负数
{{ valueladd:-2 }}
lower
{{ name|lower }}
upper
{{ my_list|firstlupper }}
截断:
{{ bio|truncatechars:30 }}
过滤器可以传递参数,参数需要使用引号引起来
比如join: {{ students join:'='}}
默认值:default,格式{{var|default:value}}
如果变量没有被提供或者为False,空,会使用默认值
根据指定格式转换日期为字符串,处理时间的就是针对date进行的转换
模板继承
block:
{% block xxx%}
code
{% endblock %}
extends 继承,写在开头位置
{% extends'父模板路径'%}
include:加载模板进行渲染
{% include'模板文件’%
{{ block.super }}:获取父模板中block中的内容
if 语句的写法及呈现结果 age=5的时候
将age=70时 呈现以下结果
for 循环语句
下标
for 循环可以嵌套if语句
循环嵌套