views.py文件
def home(request):
name = 'adrian'
age = 18
lst = ['喝酒','抽烟','烫头','做大保健']
dic = {
'key1':1,'key2':2,'key3':3
}
class Person:
def p(self):
return 'adrian'
return render(request,'home.html',{'name':name,'age':age,'lst':lst,'dic':dic,'obj':Person()})
html文件
万能的点
<h1>{{ name }}</h1>
<h1>{{ age }}</h1>
<h1>{{ dic.keys }}</h1>
<h1>{{ lst.1 }}</h1> 列表直接用 . 加索引值就行,不用加中括号
<h1>{{ obj.p }}</h1>
-
过滤器
在django模板语言中,通过使用过滤器来改变变量的显示
- 过滤器支持“链式”操作。即一个过滤器的输出作为另一个过滤器的输入。
- 过滤器可以接受参数,例如:{{ sss|truncatewords:30 }},这将显示sss的前30个词。
- 过滤器参数包含空格的话,必须用引号包裹起来。比如使用逗号和空格去连接一个列表中的元素,如:{{ list|join:', ' }}
- '|'左右没有空格
length --- 用于返回值的长度 一般作用于字符串和列表等
str = 'I love you ' <h1>{{ lst|length }}</h1>
default ---- 设置默认值
<h1>{{ name1|default:'啥也没给' }}</h1> 当name1没有值或者没有定义的时候就会将默认值返回给html页面,如果name1有值就不会显示默认值
filesizeformat ---- 将值格式化为一个 “人类可读的” 文件尺寸 (例如
'13 KB'
,'4.1 MB'
,'102 bytes'
, 等等)。例如file_size = 156165421 <h1>{{ file_size|filesizeformat }}</h1> 页面显示的结果:148.9 MB
slice ----- 切片
<h1>{{ str|slice:'0:6' }}</h1>
date ----- 格式化时间的方法
<h1>{{ date }}</h1> <h1>{{ date|date:'Y-m-d H-i-s' }}</h1> 结果: Sept. 25, 2019, 8:30 p.m. 2019-09-25 20-30-26
safe ---- 告诉html页面这个字符串是安全的,所以页面会将这个字符串进行渲染,就会将这字符串渲染成一个a标签
a_tag = '<a href="http://www.baidu.com">百度</a>' <h1>{{ a_tag|safe }}</h1>
truncatechars ------- 如果字符串字符多于指定的字符数量,那么会被截断。截断的字符串将以可翻译的省略号序列(“...”)结尾。
str = 'I love you ' <h1>{{ str|truncatechars:6 }}</h1> 结果: I l...
truncatewords ----- 在一定数量的字后截断字符串,是截多少个单词。(按照单词来,其它字符都不会生效)
str = 'I love you ' <h1>{{ str|truncatewords:2 }}</h1> 结果: I love ...
cut ------- 移除value中所有的与给出的变量相同的字符串
str = 'I love you ' <h1>{{ str|cut:' ' }}</h1> 结果: Iloveyou
join ----- 连接,用给定的字符对列表中的元素进行连接
lst = ['喝酒','抽烟','烫头','做大保健'] <h1>{{ lst|join:'+' }}</h1> 结果: 喝酒+抽烟+烫头+做大保健
-
标签
for --- 循环
lst = ['喝酒','抽烟','烫头','做大保健'] <ul> {% for i in lst %} <li>{{ i }}</li> {% endfor %} </ul> #结果: 喝酒 抽烟 烫头 做大保健 # 在需要循环的列表后边加上reversed就是反向循环 <ul> {% for i in lst reversed%} <li>{{ i }}</li> {% endfor %} </ul> #结果: 做大保健 烫头 抽烟 喝酒
循环字典 dic = { 'key1':1,'key2':2,'key3':3 } {% for k,v in dic.items %} <p>{{ k }}=={{ v }}</p> {% endfor %} 结果: key1==1 key2==2 key3==3
forloop.counter 当前循环的索引值(从1开始),forloop是循环器,通过点来使用功能 forloop.counter0 当前循环的索引值(从0开始) forloop.revcounter 当前循环的倒序索引值(从1开始) forloop.revcounter0 当前循环的倒序索引值(从0开始) forloop.first 当前循环是不是第一次循环(布尔值) forloop.last 当前循环是不是最后一次循环(布尔值) forloop.parentloop 本层循环的外层循环的对象,再通过上面的几个属性来显示外层循环的计数等
例如:forloop.counter
{% for k,v in dic.items %} {{ forloop.counter }} <p>{{ k }}=={{ v }}</p> {% endfor %} 结果: 1 key1==1 2 key2==2 3 key3==3
for .... empty :在执行for循环没有找到可用的数据后会执行empty里边的标签
<ul> {% for i in lst1%} <li>{{ i }}</li> {% empty %} <p>sorry,There is no element</p> {% endfor %} </ul>
if 标签
{% if %}
会对一个变量求值,如果它的值是“True”(存在、不为空、且不是boolean类型的false值),对应的内容块会输出。age = 18 {% if age == 18 %} <p>adrian 18岁了</p> {% elif age > 18%} <p>adrian 大于18岁</p> {% else %} <p>adrian 小于18岁</p> {% endif %}
with
使用一个简单地名字缓存一个复杂的变量,多用于给一个复杂的变量起别名,当你需要使用一个“昂贵的”方法(比如访问数据库)很多次的时候是非常有用的
例如:
注意等号左右不要加空格。
{% with total=business.employees.count %} {{ total }} <!--只能在with语句体内用--> {% endwith %}
或
{% with business.employees.count as total %} {{ total }} {% endwith %}