企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
![](https://img.kancloud.cn/41/e0/41e066af9a6c25a24868d9667253ec98_1241x333.jpg) ## DTL模板语法 模板中可以包含变量,Django在渲染模板的时候,可以传递变量对应的值过去进行替换。变量的命名规范和Python非常类似,只能是阿拉伯数字和英文字符以及下划线的组合,不能出现标点符号等特殊字符。变量需要通过视图函数渲染,视图函数在使用render或者render_to_string的时候可以传递一个context的参数,这个参数是一个字典类型。 ``` # views.py代码 def profile(request): return render(request,'profile.html',context={'username':'juran'}) class Person(object): def __init__(self,username): self.username = username def index(request): p = Person("居然") content = { 'person':p } content = { 'persons':[ 'a', 'b', 'c' ] } return render(request,"index.html",context=content) # profile.html模板代码 <h1>{{ username }}</h2> <h2>{{person.username}}</h2> <h3>{{ persons.0 }}</h3> ``` 模板中的变量同样也支持点(.)的形式。在出现了点的情况,比如person.username,模板是按照以下方式进行解析的: ``` 1.如果person是一个字典,那么就会查找这个字典的username这个key对应的值。 2.如果person是一个对象,那么就会查找这个对象的username属性,或者是username这个方法。 3.如果出现的是person.1,会判断persons是否是一个列表或者元组或者任意的可以通过下标访问的对象, 如果是的话就取这个列表的第1个值。如果不是就获取到的是一个空的字符串。 ``` **注意** >不能通过中括号的形式访问字典和列表中的值,比如dict['key']和list[1]是不支持的! >因为使用点(.)语法获取对象值的时候,可以获取这个对象的属性,如果这个对象是一个字典,也可以获取这个字典的值。所以在给这个字典添加key的时候,千万不能和字典中的一些属性重复。比如items,items是字典的方法,那么如果给这个字典添加一个items作为key,那么以后就不能再通过item来访问这个字典的键值对了。