5.Django-模板变量

DTL模板语法

变量:

模板中可以包含变量,Django在渲染模板的时候,可以传递变量对应的值过去进行替换。变量的命名规范和Python非常类似,只能是阿拉伯数字和英文字符以及下划线的组合,不能出现标点符号等特殊字符。变量需要通过视图函数渲染,视图函数在使用render或者render_to_string的时候可以传递一个context的参数,这个参数是一个字典类型。以后在模板中的变量就从这个字典中读取值的。示例代码如下:

# profile.html模板代码
<p>{{ username }}</p>

# views.py代码
def profile(request):
    return render(request,'profile.html',context={'username':'test'})

注意:

1. 在模版中使用变量,需要将变量放到`{{ 变量 }}`中。
2. 如果想要访问对象的属性,那么可以通过`对象.属性名`来进行访问。

class Person(object):
def __init__(self,username):
self.username = username

context = {
'person': p
}

以后想要访问`person`的`username`,那么就是通过`person.username`来访问。

3. 如果想要访问一个字典的key对应的value,那么只能通过`字典.key`的方式进行访问,不能通过`中括号[]`的形式进行访问。

context = {
'person': {
'username':'test'
}
}

那么以后在模版中访问`username`。就是以下代码`person.username`

4.因为在访问字典的`key`时候也是使用`点.`来访问,因此不能在字典中定义字典本身就有的属性名当作`key`,否则字典的那个属性将编程字典中的key了。

context = {
'person': {
'username':'test',
'keys':'abc'
}
}

以上因为将`keys`作为`person`这个字典的`key`了。因此以后在模版中访问`person.keys`的时候,返回的不是这个字典的所有key,而是对应的值。

5.如果想要访问列表或者元组,那么也是通过`点.`的方式进行访问,不能通过`中括号[]`的形式进行访问。这一点和python中是不一样的。示例代码如下:

{{ persons.1 }}
posted @ 2020-04-25 21:26  大碗炸酱面  阅读(277)  评论(0编辑  收藏  举报