Django基础四之模板系统
Posted liangsha0
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django基础四之模板系统相关的知识,希望对你有一定的参考价值。
一、 语法
关于模板渲染你只需要记两种特殊符号(语法):{{ }}和 {% %},变量相关的用{{}},逻辑相关的用{%%}。
二 、变量(html文件中的)
在Django的模板语言中按此语法使用:{{ 变量名 }}。
当模版引擎遇到一个变量,它将计算这个变量,然后用结果替换掉它本身。 变量的命名包括任何字母数字以及下划线 ("_")的组合。 变量名称中不能有空格或标点符号。
深度查询据点符(.)在模板语言中有特殊的含义。当模版系统遇到点("."),它将以这样的顺序查询:
字典查询(Dictionary lookup)
属性或方法查询(Attribute or method lookup)
数字索引查询(Numeric index lookup)
注意事项:
- 如果计算结果的值是可调用的,它将被无参数的调用。 调用的结果将成为模版的值。
- 如果使用的变量不存在, 模版系统将插入 string_if_invalid 选项的值, 它被默认设置为‘‘ (空字符串) 。
几个例子: view中代码:
def index(request): import datetime s = "hello" #字符串 l = [111, 222, 333] # 列表 dic = {"name": "liang", "age": 18} # 字典 date = datetime.date(1992, 5, 20) # 日期对象 class Person(object): def __init__(self, name): self.name = name def dream(self): return ‘dreamer‘ person_yuan = Person("chao") # 自定义类对象 第一条 person_egon = Person("yantao") #二 person_alex = Person("jinxin")#三 person_list = [person_yuan, person_egon, person_alex] return render(request, "index.html", {"l": l, "dic": dic, "date": date, "person_list": person_list}) # return render(request,‘index.html‘,locals()) 仅用于测试使用,生产不用 #locals()获取函数内容所有的变量,然后通过render方法给了index.html文件进行模板渲染,如果你图省事,你可以用它,但是很多多余的变量也被传进去了,效率低
<h4>{{s}}</h4>
<h4>列表:{{ l.0 }}</h4>
<h4>列表:{{ l.2 }}</h4>
<h4>字典:{{ dic.name }}</h4>
<h4>日期:{{ date.year }}</h4>
<!--取列表的第1个对象的name属性的值-->
<h4>类对象列表:{{ person_list.0.name }}</h4>
<!--取列表的第1个对象的dream方法的返回值,如果没有返回值,拿到的是none-->
<h4>类对象列表:{{ person_list.0.dream }}</h4>
注意:
调用对象里面的方法的时候,不需要写括号来执行,并且只能执行不需要传参数的方法,如果你的这个方法需要传参数,那么模板语言不支持,不能帮你渲染
三、过滤器
在Django的模板语言中,模板过滤器可以在变量被显示前修改它,使用管道字符"|"来应用过滤器。Django的模板语言中提供了大约六十个内置过滤器。
过滤器的语法: {{ value|filter_name:参数 }}
例如:{{ name|lower }}会将name变量应用lower过滤器之后再显示它的值。lower在这里的作用是将文本全都变成小写。
注意事项:
- 过滤管道可以被* 套接*(“链式”),既是说,一个过滤器管道的输出又可以作为下一个管道的输入:
- 过滤器可以接受参数,例如:{{ sss|truncatewords:30 }},这将显示sss的前30个词。
- 有些过滤器有参数。 过滤器的参数跟随冒号之后并且总是以双引号包含。
- ‘|‘左右没有空格没有空格没有空格
default
如果一个变量是false或者为空,使用给定的默认值。 否则,使用变量的值。
{{ value|default:"nothing"}}#如果value没有传值或者值为空的话就显示nothing
length
返回值的长度,作用于字符串和列表。
{{ value|length }} 返回value的长度,如 value=[‘a‘, ‘b‘, ‘c‘, ‘d‘]的话,就显示4.
filesizeformat
将值格式化为一个 “人类可读的” 文件尺寸 (例如 ‘13 KB‘
, ‘4.1 MB‘
, ‘102 bytes‘
, 等等)。例如:
{{ value|filesizeformat }} # 如果 value 是 123456789,输出将会是 117.7 MB。
slice
切片,如果 value="hello world",还有其他可切片的数据类型
{{value|slice:"2:-1"}} #顾头不顾腚
date
格式化,如果 value=datetime.datetime.now()
{{ value|date:"Y-m-d H:i:s"}}#关于时间日期的可用的参数(除了Y,m,d等等)还有很多
truncatechars
如果字符串字符多于指定的字符数量,那么会被截断。截断的字符串将以可翻译的省略号序列(“...”)结尾。
参数:截断的字符数
{{ value|truncatechars:9}} #注意:最后那三个省略号也是9个字符里面的,也就是这个9截断出来的是6个字符+3个省略号,有人会说,怎么展开啊,配合前端的点击事件就行啦
truncatewords
在一定数量的字后截断字符串,是截多少个单词。
例如:‘hello girl hi baby yue ma’,
{{ value|truncatewords:3}} #上面例子得到的结果是 ‘hello girl h1...‘
cut
移除value中所有的与给出的变量相同的字符串
{{ value|cut:‘ ‘ }}#如果value为‘i love you‘,那么将输出‘iloveyou‘.
join
使用字符串连接列表,{{ list|join:‘, ‘ }},就像Python的str.join(list)
safe {{value}}-----> value = "<a href=‘#‘>点我</a>" 和 value="<script>alert(‘123‘)</script>",不加safe时,a标签未渲染,是浏览器的一种保护机制,加了safe就可可以渲染了。{{value|safe}}---->这是开发者在开发时加入的。
以上是关于Django基础四之模板系统的主要内容,如果未能解决你的问题,请参考以下文章