![](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来访问这个字典的键值对了。
- 空白目录
- 1-Django前导知识
- 1-1-虚拟环境
- 1-2-Django框架介绍与环境搭建
- 2-URL与视图
- 2-1-URL与视图
- 3-模板
- 3-1-模板介绍
- 3-2-模板变量
- 3-3-常用标签
- 3-4-模板常用过滤器
- 3-5-模板结构优化
- 3-6-加载静态文件
- 4-数据库
- 4-1-操作数据库
- 4-2-图书管理系统
- 4-3-ORM模型介绍
- 4-4-ORM模型的增删改查
- 4-5-模型常用属性
- 4-6-外键和表
- 4-7-查询操作
- 4-8-QuerySet的方法
- 4-9-ORM模型练习
- 4-10-ORM模型迁移
- 5-视图高级
- 1-Django限制请求method
- 2-页面重定向
- 3-HttpRequest对象
- 4-HttpResponse对象
- 5-类视图
- 6-错误处理
- 6-表单
- 1-用表单验证数据
- 2-ModelForm
- 3-文件上传
- 7-session和cookie
- 1-session和cookie
- 8-memcached
- 1-memcached
- 9-阿里云部署
- 阿里云部署