模板
一概述
- 模板由两部分组成,一部分是HTML代码,一部分是逻辑控制代码(变量,标签,过滤器)
- 作用:可以通过一些逻辑控制代码减少一些重复的操作更快速的生成HTML代码,并且实现简单的逻辑判断
- 优点:实现业务逻辑与展示界面的分离,低耦合,便于后期修改和维护
- 模块处理:1.加载:找到视图返回的对应的模板,将其预处理,放入内存
2.渲染:用视图返回的context中的内容渲染模板,最后将结果展示给用户
二定义模板
- 变量:{{ a }}
注意:变量要遵守标识符的命名规则,如果使用的变量不存在,将会插入一个空字符串
在模板中还可以用点语法去访问对象中的属性
在模板中调用对象的方法与调用属性相同,不需要小括号,不允许传参
{{stu.say}} 标签
语法:{% tagName %}
作用:逻辑控制- if 使用基本与在python中一致,只不过在语句外围都用定界符包裹了起来,以至于不会以HTML的形式输出
{%if 表达式1%}
语句1
{% elif 表达式2%}
语句2
……
{% else %}
语句n
{% endif %} for
格式:
{% for 变量 in 可迭代对象%}
语句
{% endfor %}{% for 变量 in 可迭代对象%}
语句
{% empty %}
当给出的列表为空或者列表不存在时加载该部分语句
{% endfor %}comment 注释 注释可以包含任何代码c’c’c’c’c’c’c
{% comment %}
注释的内容
注释多行
{% endcomment %}单行注释
{# 我是被注释的语句 #}ifequal, ifnotequal
格式:
{% ifequal num 10 %}
语句
{% endifequal %}{% ifnotequal num 10 %} 语句 {% endifnotequal %}
- include
作用:加载模板并以标签内的参数渲染
格式:
{% include “TEMPLATE” with 变量名=值 %} - url
作用: 反向解析
格式: {% url ‘namespace:name’ p1 p2 %} - csrf_token
作用:用于跨站请求伪造保护
一般会在用post方式提交数据的表单中添加 block, extends
{% block 模块名 %}
需要替换的代码块
{% endblock 模块名 %}一般写在网页的最上部
{% extends “模板目录” %}autoescape
作用:用于HTML转义
默认是打开自动转义的 转义过后会将输入的HTML语句转换成字符串也可手动关闭
{% autoescape off %}
{{变量}}
{% endautoescape %}
三过滤器
语法 {{ 变量名|过滤器 }}
作用 在变量显示之前改变它的值
lower转成小写
upper转成大写
join 格式: list|join:’#’ 列表的元素之间用# 连接
{{ num|default:”如果变量不存在或者值为空则显示我” }}
date 作用 根据给定格式对一个date变量进行格式化显示
var|date:”Y-m-d”加减乘除
{{num|add:5}}
{{num|add:-5}}
参数1/参数2 * 参数3
{% widthratio num 1 5 %}
{% widthratio num 5 1 %}
- if 使用基本与在python中一致,只不过在语句外围都用定界符包裹了起来,以至于不会以HTML的形式输出