变量

简介: 【6月更文挑战第29天】变量。

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

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

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

模板中的变量同样也支持点(.)的形式。在出现了点的情况,比如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来访问这个字典的键值对了。

注意:

在render中第三个参数传递的是一个字典

但是 在模板文件中拿到的不是最外层的字典, 而是key-value键值对

在模板文件中, key作为变量使用, value作为变量的值而存在

相关文章
|
2月前
|
存储 C++
6变量
6变量
27 1
|
2月前
|
C++
c++常见变量
c++常见变量
28 0
|
1月前
|
Java Python
变量
【6月更文挑战第1天】变量。
19 6
|
2月前
|
存储 C语言 容器
C变量
C变量
20 1
|
2月前
|
存储 程序员 编译器
C++程序中的变量
C++程序中的变量
32 1
|
2月前
|
Python
DTL变量
【2月更文挑战第28天】DTL变量。
23 1
C4.
|
2月前
|
存储 数据安全/隐私保护 C++
C++的claas变量
C++的claas变量
C4.
22 0
|
2月前
|
存储 编译器 C++
c++的变量
c++的变量
25 0
|
2月前
|
存储
C 变量
C 变量
16 0
|
12月前
|
算法
思考变量引起的巨大变化
思考变量引起的巨大变化