变量相关的用{{}},
逻辑相关的用{%%}。
当模版系统遇到点("."),它将以这样的顺序查询:
字典查询(Dictionary lookup)
属性或方法查询(Attribute or method lookup)
数字索引查询(Numeric index lookup)
注意事项:
def template_test(request): l = [11, 22, 33] d = {"name": "alex"} class Person(object): def __init__(self, name, age): self.name = name self.age = age def dream(self): return "{} is dream...".format(self.name) Alex = Person(name="Alex", age=34) Egon = Person(name="Egon", age=9000) Eva_J = Person(name="Eva_J", age=18) person_list = [Alex, Egon, Eva_J] return render(request, "template_test.html", {"l": l, "d": d, "person_list": person_list})
{% 取l中的第一个参数 %} {{ l.0 }} {% 取字典中key的值 %} {{ d.name }} {% 取对象的name属性 %} {{ person_list.0.name }} {% .操作只能调用不带参数的方法 %} {{ person_list.0.dream }}
在Django的模板语言中,通过使用 过滤器 来改变变量的显示。
过滤器的语法: {{ value|filter_name:参数 }}
使用管道符"|"来应用过滤器。
例如:{{ name|lower }}会将name变量应用lower过滤器之后再显示它的值。lower在这里的作用是将文本全都变成小写。
注意事项:
#如果一个变量是false或者为空,使用给定的默认值。 否则,使用变量的值。 {{ value|default:"nothing"}} #返回值的长度,作用于字符串和列表。 {{ value|length }} #将值格式化为一个 “人类可读的” 文件尺寸 {{ value|filesizeformat }} #切片 {{value|slice:"2:-1"}} #时间格式化 {{ value|date:"Y-m-d H:i:s"}} #告诉Django这段代码是安全的不必转义【xss攻击】 {{ value|safe}} #截断超出的字符串,将以可翻译的省略号序列(“...”)结尾 {{ value|truncatechars:9}} #移除 value中所有的与给出的变量相同的字符串 {{ value|cut:‘ ‘ }} #使用字符串连接列表 {{ value|str.join(list)}} #将日期格式设为自该日期起的时间, {{ blog_date|timesince:comment_date }} #测量从现在开始直到给定日期或日期时间的时间 例如,如果今天是2006年6月1日,而conference_date是保留2006年6月29日的日期实例,则{{ conference_date | timeuntil }}将返回“4周”。 {{ conference_date|timeuntil:from_date }}
自定义过滤器只是带有一个或两个参数的Python函数:
#自定义filter代码文件摆放位置: app01/ __init__.py models.py templatetags/ # 在app01下面新建一个package package __init__.py app01_filters.py # 建一个存放自定义filter的文件 views.py
# 编写自定义filter from django import template register = template.Library() @register.filter(name="cut") def cut(value, arg): return value.replace(arg, "") @register.filter(name="addSB") def add_sb(value): return "{} SB".format(value)
#模板语言中,使用自定义filter {# 先导入我们自定义filter那个文件 #} {% load app01_filters %} {# 使用我们自定义的filter #} {{ somevariable|cut:"0" }} {{ d.name|addSB }}
原文:https://www.cnblogs.com/timetellu/p/10858404.html