你找到我的时候,我已经忘了你的样子。等我记起你的样子,你已经死了。
基础用法
变量
{{ variable=1 }}
或者定义临时变量
{% with variable=1 %}
{{variable}}
{% endwith %}
过滤器
default
为false或者空变量提供默认值,像这样:
{{ value|default:"nothing" }}
length
返回值的长度。它对字符串和列表都起作用。
{{ value|length }}
如果value是['a', 'b', 'c', 'd'],那么输出4。
filesizeformat
格式化为“人类可读”文件大小单位(即'13 KB',4.1 MB','102 bytes'等)。
{{ value|filesizeformat }}
如果value是123456789,输出将会是117.7MB。
标签
for循环标签
循环对象中每个元素。需要结束标签
{% endfor %}
例如,显示athlete_list中提供的运动员列表:
<ul>
{% for athlete in athlete_list %}
{{ athlete.name }}
{% endfor %}
</ul>
if,elif和else标签
计算一个表达式,并且当表达式的值是“True”时,显示块中的内容。需要
{% endif %}.
结束标签。整体逻辑非常类似Python的if、elif和else,如下所示。:
{% if athlete_list %}
Number of athletes: {{ athlete_list|length }}
{% elif athlete_in_locker_room_list %}
Athletes should be out of the locker room soon!
{% else %}
No athletes.
{% endif %}
在上面的例子中,如果athlete_list不是空的,运动员的数量将显示为0。否则,如果athlete_in_locker_room_list不为空,将显示“Athletes should be out…”。如果两个列表都是空的,将显示“No athletes.” 。
还可以在if标签中使用过滤器和多种运算符:
{% if athlete_list|length > 1 %}
Team: {% for athlete in athlete_list %} ... {% endfor %}
{% else %}
Athlete: {{ athlete_list.0.name }}
{% endif %}
需要注意,大多数模版过滤器都返回字符串类型,所以使用过滤器做整数类型的比较通常是错误的,但length是一个例外。
block和extends标签
继承和复写模版。类似Python的类继承和重写机制。
写一个通用模板,命名 base.html
其他模板调用这个通用模板使用命令:
{% extends "base.html" %}
block是在子模版中可能会被覆盖掉的位置。在上面的例子中,block标签定义了三个可以被子模版内容填充的block,分别是title、content和siderbar。
base.html 的内容可以是如下:
<meta charset="UTF-8">
<title>Domains Info Scan</title>
<head>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
</head>
<title>
{% block title%} {% endblock %}
{% block content%}
{% endblock%}
</body>
即block类似于重写部分,上面的文件中,blcok 定义的变量命名为title 那么继承的时候需要保持名字事一样的
{% extends "base.html" %}
{% block title %}我是新标题{% endblock %}
{% block content %}
6666666
{% endfor %}
{% endblock %}
注释
下面的模版将被渲染为’hello’:
hello
注释可以包含任何模版内的代码,有效的或者无效的都可以。 像这样:
自动转义HTML
对于单个变量:
使用safe过滤器来关闭变量上的自动转义:
This will be escaped: {{ data }}
This will not be escaped: {{ data|safe }}
safe是safe from further escaping或者can be safely interpreted as HTML的缩写。
在上面的例子中,如果data含有,输出会是:
This will be escaped: <b>
This will not be escaped: <b>
对于模板块:
要控制模板上的自动转义,将模板(或者模板中的特定区域)包裹在autoescape标签中,像这样:
{% autoescape off %}
Hello {{ name }}
{% endautoescape %}
内置标签
标签 说明
autoescape 自动转义开关
block 块引用
comment 注释
csrf_token CSRF令牌
cycle 循环对象的值
debug 调试模式
extends 继承模版
filter 过滤功能
firstof 输出第一个不为False的参数
for 循环对象
for … empty 带empty说明的循环
if 条件判断
ifequal 如果等于
ifnotequal 如果不等于
ifchanged 如果有变化,则..
include 导入子模版的内容
load 加载标签和过滤器
lorem 生成无用的废话
now 当前时间
regroup 根据对象重组集合
resetcycle 重置循环
spaceless 去除空白
templatetag 转义模版标签符号
url 获取url字符串
verbatim 禁用模版引擎
widthratio 宽度比例
with 上下文变量管理器
内置过滤器
过滤器 说明
add 加法
addslashes 添加斜杠
capfirst 首字母大写
center 文本居中
cut 切除字符
date 日期格式化
default 设置默认值
default_if_none 为None设置默认值
dictsort 字典排序
dictsortreversed 字典反向排序
divisibleby 整除判断
escape 转义
escapejs 转义js代码
filesizeformat 文件尺寸人性化显示
first 第一个元素
floatformat 浮点数格式化
force_escape 强制立刻转义
get_digit 获取数字
iriencode 转换IRI
join 字符列表链接
last 最后一个
length 长度
length_is 长度等于
linebreaks 行转换
linebreaksbr 行转换
linenumbers 行号
ljust 左对齐
lower 小写
make_list 分割成字符列表
phone2numeric 电话号码
pluralize 复数形式
pprint 调试
random 随机获取
rjust 右对齐
safe 安全确认
safeseq 列表安全确认
slice 切片
slugify 转换成ASCII
stringformat 字符串格式化
striptags 去除HTML中的标签
time 时间格式化
timesince 从何时开始
timeuntil 到何时多久
title 所有单词首字母大写
truncatechars 截断字符
truncatechars_html 截断字符
truncatewords 截断单词
truncatewords_html 截断单词
unordered_list 无序列表
upper 大写
urlencode 转义url
urlize url转成可点击的链接
urlizetrunc urlize的截断方式
wordcount 单词计数
wordwrap 单词包裹
yesno 将True,False和None,映射成字符串‘yes’,‘no’,‘maybe’