Django模板系统
常用语法:{{ }}和{% %}
变量相关的{{ }},逻辑相关的用{% %}。
变量:
在Django的模板语言中按此语法使用:{{变量名}}。当模板引擎遇到一个变量,它将计算这个变量,然后用结果替换掉它本身。
点(.)在模板语言中有特殊的含义。当模板系统遇到点("."),它将以这样的顺序查找:
- 字典查找(Dictionary lookup)
- 属性或方法查询(Attribute or method lookup)
- 数字索引查询(Numeric index Lookup)
注意事项:
- 如果计算结果的值是可调用的,它将被无参数的调用。调用的结果将成为模板的值。
- 如果使用的变量不存在,模板系统将插入string_if_invalid选项的值,它被默认设置为:''(空字符串)
几个例子:
# view.py
def test(request):
list_1 = [1, 2, 3]
dict_1 = {'name': 'goudan'}
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def sb(self, name):
return f'{name} is sb'
Zhangsan = Person(name='Zhangsan', age=13)
Lisi = Person(name='Lisi', age=14)
person_list = [Zhangsan, Lisi]
return render(request, 'text.html', locals())
模板中支持的写法:
# text.html
{# 取l中的第一个参数 #}
{{ list_1.0 }}
{# 取字典key的值 #}
{{ dict_1.name }}
{# 取对象的name属性 #}
{{ person_list.0.name }}
{# .操作只能调用不带参数的方法 #}
{{ person_list.0.sb }}
1、Filters(过滤器)
在Django的模板语言中,通过使用过滤器来改变变量的显示。过滤器的语法:{{ value|filter_name:参数 }}。使用管道符"|"来应用过滤器。
例如:{{ name|lower}}会将name变量应用lower过滤器之后再显示它的值。lower再这里的作用是将文本全都变成小写。
注意事项:
- 过滤器支持"链式"操作。即一个过滤器的输出作为另一个过滤器的输入.
- 过滤器可以接受参数,例如:{{ sss|truncatewords:30 }},这将显示sss的前30个词.
- 过滤器参数包含空格的话,必须用引号包裹起来.比如使用逗号和空格去连接一个列表中的元素,如:{{ list|join:', '}}
- '|'左右没有空格没有空格没有空格.
Django的模板语言中提供了大约六十个内置的过滤器
未完待续..........................