文章目录
变量
- 形式
{{ variable }}
- 如果模板中使用的某个变量不存在,模板系统将使用
setting.py
中的 变量TEMPLATE_STRING_IF_INVALID
替代
过滤器
形式
{{ variable | filter }}
# 多个过滤器
{{ variable | filter01 | filter02 }}
# 带参数
{{ variable | filter: data }}
常用过滤器
过滤器 | 使用 | 说明 |
---|---|---|
add | {{ value | add: “2”}} | value值加2 |
addslashes | {{ value | addslashes }} | 在value中的引号前增加反斜线 |
capfirst | 首字母大写 | |
cut | {{ value | cut: arg }} | 从给定的value中删除所有arg。 (多用于字符串) |
date | {{ value | date[: ‘D d M Y’] }} | 日期格式化为字符串。 默认形式:DATE_FORMAT 值 |
default | {{ value | default: arg }} | 设置默认值 |
default_if_none | {{ value | default_if_none: arg }} | 如果value值为none,使用默认arg值 |
dictsort | {{ value | dictsort: arg }} | 如果value是字典。 返回按关键字arg排序后的字典 |
dictsortreversed | 类似上述。 区别在于 排序后再逆序 | |
divisibleby | {{ value | divisibleby:arg}} | 如果value能够被arg整除,那么返回值将是True |
escape | {{ value | escape}} | 替换value中的某些字符,以适应HTML格式 escape不能够用在链式过滤器的中间 非要在中间:force_escape |
escapejs | {{ value | escapejs }} | 替换value中的某些字符,以适应JAVASCRIPT和JSON格式。 |
filesizeformat | 格式化value,使其成为易读的文件大小, 例如:13KB,4.1MB等 | |
first | {{ value | first }} | 返回列表中的第一个Item |
last | {{ value | last }} | 返回列表中的最后一个Item |
floatformat | {{ value | floatformat[:arg] }} | 无arg:四舍五入,最多保留一位小数 arg正数:保留arg位小数 arg负数:四舍五入,至多|arg|位小数 |
get_digit | {{ value | get_digit:“arg”}} | 返回value第arg位上的数; 第一位:个位 value不是数字,返回原值 |
iriencode | {{value | iriencode}} | 如果value中有非ASCII字符,那么将其进行抓化成URL中适合的编码 |
join | {{ value | join:“arg”}} | 使用指定的字符串连接一个list |
length | {{ value | length }} | 返回value的长度 |
length_is | {{ value | length_is:“arg”}} | 返回True,如果value的长度等于arg的时候 |
linebreaks | {{ value | linebreaks}} | value中的\n 将被<br/> 替代,并且整个value使用</p> 包围起来 |
linebreaksbr | {{ value | linebreaksbr }} | value中的\n 将被<br/> 替代 |
linenumbers | {{value | linenumbers}} | 显示的文本,带有行数。 |
ljust | {{ value | ljust }} | 在一个给定宽度的字段中,左对齐显示value |
center | {{ value | center }} | 在一个给定宽度的字段中,中心对齐显示value |
rjust | {{ value | rjust }} | 在一个给定宽度的字段中,右对齐显示value |
lower | {{ value | lower }} | 将一个字符串转换成小写形式 |
make_list | {{ value | make_list }} | 将value转换成一个list,对于字符串,转换成字符list;对于整数,转换成整数list |
pluralize | {{ value | pluralize }} {{value | pluralize:“es”}} {{value | pluralize:“y,ies”}} | 如果value 不是1,则返回一个复数后缀,缺省的后缀是s |
random | {{value | random}} | 从给定的list中返回一个任意的 Item |
removetags | {{value | removetags:“tag1 tag2 tag3…”}} | 删除value中tag1 , tag2 …的标签 |
safe | {{value | safe}} | 当系统设置autoescaping打开的时候,该过滤器使得输出不进行escape转换 |
safeseq | 与上述safe基本相同,但有一点不同的就是:safe是针对字符串,而safeseq是针对多个字符串组成的sequence | |
slice | {{some_list | slice:":2"}} | 与python 语法中的slice 相同,:2 表示第二个元素 |
slugify | {{value | slugify}} | 将value转换成小写形式,同事删除所有分单词字符,并将空格变成横线 |
stringformat | ||
striptags | {{value | striptags}} | 删除value中的所有HTML标签 |
time | {{value | time:“H:i”}} {{value | time}} | 格式化时间输出,如果time后面没有格式化参数,那么输出按照TIME_FORMAT 中设置的进行。 |
title | 转换一个字符串成为title格式。 | |
truncatewords | {{value | truncatewords:2}} | 将value 切成truncatewords 指定的单词数目 |
truncatewords_html | 类似上一个 | |
upper | 转换一个字符串为大写形式 | |
urlencode | 将一个字符串进行URLEncode | |
urlize | 将一个字符串中的URL转化成可点击的形式。 | |
urlizetrunc | {{ value | urlizetrunc:15}} | 与上一个相同,但是有一点不同就是现实的链接字符会被truncate成特定的长度,后面以…现实。 |
wordcount | 返回字符串中单词的数目 | |
wordwrap | {{value | wordwrap:5}} | 按照指定的长度包装字符串 |
timesince | {{value | timesince:arg}} | 返回参数arg到value的天数和小时数 |
timeuntil | {{value | timeuntil}} | 与上一个基本相同,一个不同点就是,返回的是value距离当前日期的天数和小时数。 |
常用语法
{% for %}
{% for itm in list %}
<span>{{ itm.name }}</span>
...
{% endfor %}
{% for itm in list %}
<span>{{ itm.name }}</span>
...
{% empty %}
...<!-- list为空的时候执行 -->
{% endfor %}
{% cycle %}
- 循环时轮流使用给定的字符串列表中的值
<option value="{% cycle values %}">lala</option>
{% if %}
{% if falg %}
...
{% endif %}
{% block %}
- 定义一个块,该块能够被继承的模板重写
{% block blk_name %}
{% endblock %}
{% extends %}
- 继承模板文件
- 配合
{% block block_name %}
使用
{% extends "base.html" %}
{% comment %}
{% comment %}
注释
{% endcomment %}
{% with %}
- 当一个变量的访问消耗很大的模板解析时,可以用另外一个变量替换它,这种替换只有在with内部有效。
{% with books as bks %}
<!-- DoSomething -->
{% endwith %}
{% include %}
- 将另外一个模板文件内容添加到改文件
- 与
extend
区别:extend
是继承
{% include “foo/bar.html” %}
<!-- or: -->
{% include template_name %}
继承 示例
模板文件:
base.html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<title>{% block title %}{% endblock %}</title>
{% load static %}
<script src="{% static 'js/jquery.min.js' %}"></script>
<!--bootstrap核心js-->
<script src="{% static 'js/bootstrap.min.js' %}"></script>
</head>
<body>
{% block content %} {% endblock %}
</body>
</html>
继承模板:
test.html
{% extends "base.html" %}
{% block title %}登录页面{% endblock %}
{% block content %}
<div>
<ul>
<li>test</li>
<li>test</li>
<li>test</li>
</ul>
</div>
{% endblock %}