模板层
{{}}:主要是与数据值相关
{%%}:主要与逻辑相关
django的模板语法是自己写的 跟jinja2不一样
-
针对需要加括号调用的名字 django模板语法会自动加括号调用,我们只需要写名字就行
-
模板语法的注释前端浏览器是无法查看的
{#注释内容#}
-
模板语法传值
- 传值方式1精准传值,不浪费资源怎对多资源的传递书写麻烦
return render(request, 'demo02.html', {'n1': name, 'a1': age})
-
传值方式2将函数名称空间中所有的名字全部传递 名字过多并且不使用的的情况下比较浪费资源
return render(request, 'demo02.html', locals())
-
模板语法传值特性
-
基本数据类型正常展示
-
文件对象也可以正常展示并调用
-
函数名会自动加括号执行将返回值展示到页面上(不支持额外传参)
-
类名也会自动加括号调用
-
对象则不会
-
总结针对可以加括号调用的名字模板语法都会自动加括号调用
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) jason = Person(name="jason", age=9000) Eva_J = Person(name="Eva_J", age=18) person_list = [Alex, jason, 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 }}
-
-
模板语法自过滤气器(相当于内置函数)
https://www.cnblogs.com/Dominic-Ji/articles/10982302.html详细的过滤器参考这里
过滤器 用法 代码 last 获取列表/元组的最后一个成员 {{liast | last}} first 获取列表/元组的第一个成员 {{list|first}} length 获取数据的长度 {{list | length}} defualt 当变量没有值的情况下, 系统输出默认值, {{str|default="默认值"}} safe 让系统不要对内容中的html代码进行实体转义 {{htmlcontent| safe}} upper 字母转换成大写 {{str | upper}} lower 字母转换成小写 {{str | lower}} title 每个单词首字母转换成大写 {{str | title}} date 日期时间格式转换 `{{ value cut 从内容中截取掉同样字符的内容 {{content | cut:"hello"}} list 把内容转换成列表格式 {{content | list}} add 加法 {{num| add}} filesizeformat 把文件大小的数值转换成单位表示 {{filesize | filesizeformat}} join
按指定字符拼接内容 {{list| join("-")}} random
随机提取某个成员 {list | random}} slice
按切片提取成员 {{list | slice:":-2"}} truncatechars
按字符长度截取内容 {{content | truncatechars:30}} truncatewords
按单词长度截取内容 同上