Django模板标签
文章目录
- Django模板标签
- 变量
- 列表和字典
- 过滤器
- if / else
- for
- ifequal / ifnotequal
- 注释
- include
- 模板继承
变量
1:Django模板的变量在前端将用
{{ xxx }}
表示,其中
xxx
是变量的名称
<h1> {{ name }} </h1> <!-- 会将后端传来的参数的变量的内容显示出来 -->
2:语法:
view:{\"HTML变量名\" : \"views变量名\"}HTML:{{ HTML变量名 }}
列表和字典
1:可以将列表传入前端进行相应的操作
- 后端给前端传入列表
test_list = [\"test1\", \"test2\", \"test3\"]return render(request, \"list.html\", {\"li\": test_list})
- 前端可以适用li进行链表的访问和操作
<p> {{ li }} </p> <!-- 返回整个列表 --><p> {{ li.1 }} </p> <!-- 返回列表的第二个元素 -->
2:字典同理。只不过这次可以通过对应的键返回指定的内容
<p> {{ dict.age }} </p> <!-- 返回字典的age属性 -->
过滤器
1:过滤器的语法是
{{ 变量名 | 过滤器:可选参数 }}
可以在变量被修改前进行对应的装饰修改
<p> {{ li.0 | upper }} </p> <!-- 将传入的列表的第一个元素进行大写处理 --><p> {{ li | first | lower }} </p> <!-- 将列表的第一个元素小写处理 -->
2:常见的过滤器有
add
:都添加指定的内容
first / last
:列表的最后一个或者第一个
cut
data
:返回指定的格式的日期:常见的就是
Y-n-d H:i:s
default
:默认的情况
join
:类似于python的
join
操作,对字符串,列表等用指定的字符进行拼接
length
:长度
lower / upper
:大写 / 小写
slice
:对列表在指定的位置进行切片
| slice : \"2 : \"从2开始进行切片
safe
:设置为安全模式,不会对字符串进行自动的转义
truncatechars
:显示指定个数的字符,如果字符串的长度超过限定的字符个数,后面自动补
...
填充
if / else
{% if xxx %}con.....{% elif xxx %}con.....{% else %}con.....{% endif %}
for
1:基本结构
{% for elem in xxx %}iter _con....{% endfor %}
2:内置变量
(1)在 {% for %} 标签里可以通过 {{forloop}} 变量获取循环序号。
-
forloop.counter
: 顺序获取循环序号,从
1
开始计算
-
forloop.counter0
: 顺序获取循环序号,从
0
开始计算
-
forloop.revcounter
: 倒叙获取循环序号,结尾序号为
1
-
forloop.revcounter0
: 倒叙获取循环序号,结尾序号为
0
-
forloop.first
(一般配合if标签使用): 第一条数据返回
True
,其他数据返回
False
-
forloop.last
(一般配合if标签使用): 最后一条数据返回
True
,其他数据返回
False
(2)
{% empty %}
在循环为空的时候执行(即 in 后面的参数布尔值为 False )
{% for i in listvar %}{{ forloop.counter0 }}{% empty %}空空如也~{% endfor %}
ifequal / ifnotequal
1:比较两个值,当他们相等时,显示在 {% ifequal %} 和 {% endifequal %} 之中所有的值
{% ifequal section \'sitenews\' %}<h1>Site News</h1>{% else %}<h1>No News Here</h1>{% endifequal %}
注释
用
{# xxx #}
进行注释
{# 这是一个Django的注释 #}
include
用
{% include \"xxx.html\" %}允许在这个模板中使用其他模板的内容
{% include \'test.html\' %}
模板继承
1:父类模板
{% block 名称 %}预留给子模板的区域,可以设置设置默认内容{% endblock 名称 %}
2:子模版
{% extends \"父模板路径\"%}{ % block 名称 % }内容{% endblock 名称 %}
3:举例子说明一下
{# 在父模板中 #}<!DOCTYPE html><html><head><meta charset=\"utf-8\"><title>菜鸟教程(runoob.com)</title></head><body><h1>Hello World!</h1><p>菜鸟教程 Django 测试。</p>{% block mainbody %}<p>original</p>{% endblock %}</body></html>{# 在子模版中 #}{%extends \"base.html\" %}{% block mainbody %}<p>继承了 base.html 文件</p>{% endblock %}