1 模板系统(template):向页面中填充内容
(1)模板系统常用符号{{}} 和{% %}
a:如果在模板中需要解析变量使用{{}}
b:如果在模板中进行逻辑相关操作使用{%%}
注释 {#...#} 单行注释
(2)变量
在Django 的模板系统中变量使用的语法:{{ 变量名}}
当模板引擎遇到变量,就会用值替换掉变量。
变量的命名可以是字母数字以及下划线("_")的组合
变量名称中不能有空格或标点符号。
练习1 :将index 页面中的{{name}}替换为张三
@@demo01.html 文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
大家好,我是{{ name }},请大家多多关照!!!
</body>
</html>
@@views.py文件
def demo01(request):
return render(request,'demo01.html',{'name':'张三'})
@@urls.py文件
urlpatterns=[
path('admin/',admin.site.urls),
path('demo01/',views.demo01)
]
练习2:将页面中的{{name}},{{age}},{{height}} 替换成具体的值
@@demo01.html 文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
大家好,我是{{ name }},今年{{age}}岁了,身高{{height}},请大家多多关照!!!
</body>
</html>
@@views.py 文件
def demo02(request):
name = '张三'
age = 19
height = 1.99
return render (request,'demo02.html',{'name':name,'age':age,'height':height})
@@urls.py 文件
urlpatterns=[
path('admin/',admin.site.urls),
path('demo02/',views.demo02)
]
扩展:使用locals()内置函数,获取全部局部变量
def demo02(request):
name ='张三'
age = 19
height = 1.99
print(locals()) #{'age': 18, 'name': 张三', ‘height’:1.99 'request': <WSGIRequest: GET '/laowang3/'>}
return render(request,'demo02.html',locals())
练习3:点(.)的特殊含义
点(.)在模板语言中有特殊的含义。当模版系统遇到点("."),它将以以下顺序查询:
(1)字典查询 : 如果向页面传递的是一个字典类型变量,变量名.key 获取值
(2)属性或方法查询: 如果传递一个对象,变量名.变量名 (此变量名有可能是属性,有可能是无参数方法名称)。
(3)数字索引查询: 如果传递一个列表,变量名.索引。
@@Views.py
def index02(request): """传递字典参数"""
data = {'name': '刘瑞'}
return render(request, 'index02.html', {'data': data})
class Person(object):
def __init__(self, name):
self.name = name
def dream(self):
return "{}的梦想是做一名老师".format(self.name)
def index03(request):
"""传递对象"""
person = Person('张三')
return render(request, 'index02.html', {'person': person})
def index04(request):
"""传递列表"""
lst = ['zs', 'ls', 'ww']
return render(request, 'index02.html', {'lst': lst})
@@Index02.html页面
@@Urls.py文件
注意事项:
如果使用的变量不存在, 它被默认设置为(空字符串) 。