djangohtml页⾯Template模板语法⼆、定义模板
1. 模板语⾔(DTL)主要内容
1)变量
2)标签 { % 代码块 % }
3)过滤器
4)注释{# 代码或html #}
2. 变量
1)语法:
{{ variable }}
2)当模版引擎遇到⼀个变量,将计算这个变量,然后将结果输出
3)变量名必须由字母、数字、下划线(不能以下划线开头)和点组成
4)当模版引擎遇到点("."),会按照下列顺序查询:
1. 字典查询,例如:foo["bar"] {{foo.bar}}
2. 属性或⽅法查询,例如:foo.bar
3. 数字索引查询,例如:foo[bar] {{all_students.0}}
5)如果变量不存在, 模版系统将插⼊'' (空字符串)
6)在模板中调⽤⽅法时不能传递参数
3. 在模板中调⽤对象的⽅法和属性
4. 标签
1)语法:{ % tag % }
2)作⽤
在输出中创建⽂本
控制循环或逻辑
加载外部信息到模板中供以后的变量使⽤
4.1 for标签
4.1.1 语法
{ %for ... in ...%}
循环逻辑
{{unter}}
表⽰当前是第⼏次循环
{ %empty%}
给出的列表为或列表不存在时,执⾏此处
{ %endfor%}
4.2 if标签
4.2. 1语法
{ %if ...%}
逻辑
1
{ %elif ...%}
逻辑
2
{ %else%}
逻辑
3
{ %endif%}
4.3 comment标签,多⾏注释
{ % comment % }
多⾏注释
{ % endcomment % }
4.4 include:加载模板并以标签内的参数渲染
可以包含另外⼀个模块过来
{ %include "foo/bar.html" % }
4.5 url:反向解析
4.5.1 语法
语法:'p1'和 'p2'是数据
{ % url 'name' 'p1' 'p2' %}?=’get
请求⽅式
’
4.6 csrf_token:这个标签⽤于跨站请求伪造保护
{ % csrf_token %} 通常加在表单中不加⽽且没有关闭django csrf的中间件,会403错误
5. 过滤器
5.1 过滤器语法
1)语法:{ { 变量|过滤器 }}
django admin 自定义页面2)例如{ { name|lower }},表⽰将变量name的值变为⼩写输出
3)使⽤管道符号 (|)来应⽤过滤器
4)通过使⽤过滤器来改变变量的计算结果
5.2 过滤器常⽤形式
1)可以在if标签中使⽤过滤器结合运算符
if list1|length > 1
2)过滤器能够被“串联”,构成过滤器链
name|lower|upper
3)过滤器可以传递参数,参数使⽤引号包起来
list|join:", "
引号必须为双引号
4)default:如果⼀个变量没有被提供,或者值为false或空,则使⽤默认值,否则使⽤变量的值
value|default:"
什么也没有
"
5)date:根据给定格式对⼀个date变量格式化
value|date:'Y-m-d'
6)escape:详见“HTML转义”
5.3 Django 过滤器表
过滤器描述⽰例
upper以⼤写⽅式输出{{ user.name | upper }}
add给value加上⼀个数值{{ user.age | add:”5” }}
addslashes单引号加上转义号
capfirst第⼀个字母⼤写{{ ‘good’| capfirst }} 返回”Good”
center输出指定长度的字符串,把变量居中{{ “abcd”| center:”50” }}
cut删除指定字符串{{ “You are not a Englishman” | cut:”not” }} date格式化⽇期
default如果值不存在,则使⽤默认值代替{{ value | default:”(N/A)” }}
default_if_none如果值为None, 则使⽤默认值代替
dictsort按某字段排序,变量必须是⼀个dictionary{% for moment in moments | dictsort:”id” %} dictsortreversed按某字段倒序排序,变量必须是dictionary
divisibleby判断是否可以被数字整除
{{ 224 | divisibleby:“2”}} 返回 True
escape按HTML转义,⽐如将”<”转换为”<” A = ‘<a href=>我爱你</a>’
filesizeformat 增加数字的可读性,转换结果为
13KB,89MB,3Bytes等
{{ 1024 | filesizeformat }} 返回 1.0KB
first返回列表的第1个元素,变量必须是⼀个列表
floatformat转换为指定精度的⼩数,默认保留1位⼩数{{ 3.1415926 | floatformat:3 }} 返回 3.142 四舍五⼊
get_digit从个位数开始截取指定位置的数字{{ 123456 | get_digit:’1’}}
join⽤指定分隔符连接列表{{ [‘abc’,’45’] | join:’*’ }} 返回 abc*45 length返回列表中元素的个数或字符串长度
length_is检查列表,字符串长度是否符合指定的值{{ ‘hello’| length_is:’3’ }}
linebreaks⽤<p>或<br>标签包裹变量{{ “Hi\n\nDavid”|linebreaks }} 返回<p>Hi</p>
<p>David</p>
linebreaksbr⽤<br/>标签代替换⾏符
linenumbers为变量中的每⼀⾏加上⾏号
ljust输出指定长度的字符串,变量左对齐{{‘ab’|ljust:5}}返回 ‘ab ’
lower字符串变⼩写
make_list将字符串转换为列表
pluralize根据数字确定是否输出英⽂复数符号
random返回列表的随机⼀项
removetags删除字符串中指定的HTML标记{{value | removetags: “h1 h2”}}
rjust输出指定长度的字符串,变量右对齐
slice切⽚操作, 返回列表{{[3,9,1] | slice:’:2’}} 返回 [3,9] {{ 'asdikfjhihgie' | slice:':5' }} 返回 ‘asdik’
slugify 在字符串中留下减号和下划线,其它符号删除,空格
⽤减号替换
{{ '5-2=3and5 2=3' | slugify }} 返回 5-23and5-23
stringformat字符串格式化,语法同python
time返回⽇期的时间部分
timesince以“到现在为⽌过了多长时间”显⽰时间变量结果可能为 45days, 3 hours
timeuntil 以“从现在开始到时间变量”还有多长时间显⽰时间变量
title每个单词⾸字母⼤写
truncatewords将字符串转换为省略表达⽅式
{{ 'This is a pen' | truncatewords:2 }}返回
This is ...
truncatewords_html同上,但保留其中的HTML标签
{{ '<p>This is a pen</p>' | truncatewords:2 }}返回
<p>This is ...</p>
urlencode将字符串中的特殊字符转换为url兼容表达⽅式
urlize将变量字符串中的url由纯⽂本变为链接
wordcount返回变量字符串中的单词数
{{ True | yesno }}
{{ False | yesno }}
{{ None | yesno }}
返回
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论