Django Template Language 模板语言
一、标签 tags
1、普通变量
- 普通变量用
{{ }}
- 变量名由数字、字母、下划线组成
- 点.在模板语言中用来获取对象相应的属性值
- 示例
{# 取variable中的第一个参数 #}
{{ variable.0 }}
{# 取字典dic中key的值 #}
{{ dic.key }}
{# 取obj_list对象列表中第一个对象的attr属性值 #}
{{ obj_list.0.attr }}
{# 点操作只能调用不带参数的方法 #}
{{ obj_list.0.method }}
2、逻辑判断
- 逻辑判断用
{% %}
-
for
- 语法:
{% for item in item_list %}...{% empty %}...{% endfor %}
- 作用:循环item_list,如果item值为空或不存在,则会执行empty中的代码,切记要写endfor结束循环
-
常用for循环参数:
Variable Description forloop.counter
当前循环的索引值(从1开始) forloop.counter0
当前循环的索引值(从0开始) forloop.revcounter
当前循环的倒序索引值(从1开始) forloop.revcounter0
当前循环的倒序索引值(从0开始) forloop.first
当前循环是不是第一次循环(布尔值) forloop.last
当前循环是不是最后一次循环(布尔值) forloop.parentloop
本层循环的外层循环
- 语法:
-
if
- 语法:
{% if some_condition %}...{% elif other_condition %}...{% endif %}
- 作用:条件判断,切记要写endif结束条件判断
- 常用与if语句结合的判断关键字
and 、or、==、>、<、!=、<=、>=、in、not in、is、is not
- 语法:
-
with
- 语法:
{% with new_variable = old_variable %}.....{% endwith %}
作用:定义中间变量,作用域只在with中
- 语法:
- set
- 语法:{% set name='gao' %}
<h1>你好啊!大家好!</h1>
{{ name }} - 作用:定义在全局变量,全局都能用
- 语法:{% set name='gao' %}
-
csrf_token
- 语法:在页面的每个form表单中1写上
{% csrf_token %}
- 作用:用于跨站请求伪造保护
- 语法:在页面的每个form表单中1写上
-
注释
- 语法:
{# note #}
- 语法:
3、母版系统
-
继承
- 语法:
{% extends 'base.html' %}
- 作用:在子页面中在页面最上方使用下面的语法来继承母板
- 语法:
-
块 block
- 语法:
{% block block_name %}...{% endblock %}
- 作用:在子页面中通过定义母板中的block名来对应替换母板中相应的内容
- 语法:
-
组件
- 语法:
{% include 'subassembly.html' %}
- 作用:可以将常用的固定的HTML内容保存在单独的文件中,在需要的地方用以上语法导入使用
- 语法:
4、静态文件相关
-
引用静态文件目录
- 语法:
{% load static %}
- 作用:通过模板语言引用静态文件夹目录名称
- 示例:
{% load static %} <img src="{% static 'images/sample.jpg' %}"></img>
- 1
- 2
- 语法:
-
引用静态文件目录
- 语法:{% get_static_prefix %}
- 作用:通过模板语言引用静态文件夹目录名称
- 示例:
{% load static %} <img src="{% get_static_prefix %}images/sample.jpg"></img>
- 1
- 2
5、自定义simpletag
- 作用:可以自定义标签,注册后可使用
-
自定义simpletag的步骤(与自定义Filter类似,不过接收更灵活的参数)
- 在项目的app中创建名为templatetags的文件夹
- 在templatetags的文件夹中创建自定义的py文件,例如:custom_simpletag.py
-
custom_simpletag.py中编写自定义simpletag,例如:
from django import template register = template.Library() @register.simple_tag(name="my_simpletag") def add_simpletag(a,b,c): # 可接收多个参数 return "{} + {} + {}".format(a, b, c)
- 1
- 2
- 3
- 4
- 5
- 6
- 使用自定义simple_tag前,首先在HTML页面中导入py文件
{% load custom_simpletag %} {% my_simpletag "1" "2" "3" %}
- 1
- 2
6、自定义inclusion_tag
- 作用:返回html代码片段
-
自定义inclusion_tag的步骤
- 在项目的app中创建名为templatetags的文件夹
- 在templatetags的文件夹中创建自定义的py文件,例如:custom_inclusiontag.py
-
custom_inclusiontag.py中编写自定义inclusiontag,例如:
from django import template register = template.Library() @register.inclusion_tag('inclusion_tag.html') def my_inclusiontag(n): n = 1 if n < 1 else int(n) data = ["第{}项".format(i) for i in range(1, n+1)] return {"data": data}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
-
在templates文件夹中创建刚才注册的inclusion_tag.html文件
<ul> {% for choice in data %} <li>{{ choice }}</li> {% endfor %} </ul>
- 1
- 2
- 3
- 4
- 5
-
使用自定义my_inclusiontag前,首先在HTML页面中导入py文件
{% load custom_inclusiontag %} {% my_inclusiontag 10 %}
- 1
- 2
二、过滤器 Filter
1、内置过滤器
-
语法:
{{ value|filter_name:args }}
,注意:管道符前后没有空格 -
default
- 语法:
{{ value: default: "自定义内容"}}
- 作用:如果value值没传的话就显示自定义内容
- 语法:
-
length
- 语法:{{ value|length }}
- 作用:返回value的长度
-
filesizeformat
- 语法:
{{ value|filesizeformat }}
- 作用:将value格式化为一个 “人类可读的” 文件大小格式
- 语法:
-
slice
- 语法:
{{value|slice:"start:end"}}
- 作用:切片
- 语法:
-
date
- 语法:
{{ value|date:"Y-m-d H: i:s"}}
- 作用:将时间格式的value进行自定义格式化
- 语法:
-
safe
- 语法:
{{value|safe}}
- 作用:取消Django对HTML标签和JS等语法标签进行自动转义,认为插入的HTML或JS是安全的不必转义
- 语法:
-
truncatechars
- 语法:{{ value|truncatechars:num}}
- 作用:如果字符串字符多于指定的字符数量,那么会被截断。截断的字符串将以可翻译的省略号序列(“…”)结尾。num参数是指截断的字符数
2、自定义过滤器 Filter
-
自定义过滤器的步骤
- 在项目的app中创建名为templatetags的文件夹
- 在templatetags的文件夹中创建自定义的py文件,例如:custom_filter.py
-
在custom_filter.py中编写自定义过滤器,例如:
from django import template register = template.Library() @register.filter(name="my_filter") def my_filter(value, arg): #最多接收两个参数 return value.replace(arg, "")
- 1
- 2
- 3
- 4
- 5
- 6
- 使用自定义filter前,首先在HTML页面中导入py文件
{% load custom_filter %} {{ variable|my_filter:"0" }}
- 1
- 2
三、参考链接
-
官方链接
https://docs.djangoproject.com/en/1.11/ref/templates/language/ -
官方链接-内置标签
https://docs.djangoproject.com/en/1.11/ref/templates/builtins/#built-in-tag-reference -
官方链接-内置过滤器
https://docs.djangoproject.com/en/1.11/ref/templates/builtins/#built-in-filter-reference -
其他链接
http://baijiahao.baidu.com/s?id=1578789736945590676&wfr=spider&for=pc
https://code.ziqiangxuetang.com/django/django-template2.html