模板系统(template)
-
模板系统的功能:
向页面中填充内容。
-
模板系统常用符号{{}}和{%%}
-
如果在模板中需要解析变量使用{{}}.
-
如果在模板中进行逻辑相关操作使用{%%}
-
注释 {# … #},单行注释。
变量:
-
在Django的模板系统中变量使用的语法:
{{ 变量名 }}
。 -
当模版引擎遇到变量,就会用值替换掉变量。
-
变量的命名可以是字母数字以及下划线 ("_")的组合,变量名称中不能有空格或标点符号。
案例1:将html页面中的{{name}}替换为老王。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
大家好,我是资深讲师{{ name }},请多多关照
</body>
</html>
views.py
文件
from django.shortcuts import render
def laowang(request):
return render(request,'laowang.html',{'name':'老王'})
注意:key的名称和模板中的变量名称相同。
urls.py
文件
from django.contrib import admin
from django.urls import path
from day02_django02 import views
urlpatterns = [path('laowang/', views.laowang),]
案例2:将页面中的{{name}},{{age}},{{height}} 替换成具体的值
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
大家好,我是资深讲师{{ name }},今年{{age}}岁了,身高{{height}}请多多关照
</body>
</html>
views.py
文件
from django.shortcuts import render
def laowang1(request):
name='老王'
age=19
height=173
return render(request,'laowang.html',{'name':'name王',‘age’:age,'height':height})
urls.py
文件
from django.contrib import admin
from django.urls import path
from day02_django02 import views
urlpatterns = [path('laowang/', views.laowang1),]
点(.)的特殊含义
点(.)在模板语言中有特殊的含义。
当模版系统遇到点("."),它将以以下顺序查询:
- 字典查询 :如果向页面传递的是一个字典类型变量:
变量名.key
获取相对应的值
例如:将页面中的{{ person.name }},{{person.age}},{{person.dream}} 替换成具体的值
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
大家好,我是资深讲师{{ person.name }},年龄:{{ person.age }},我的梦想{{ person.dream }}
</body>
</html>
views.py
文件
from django.shortcuts import render
class Person(object):
def __init__(self,name,age):
self.name=name
self.age=age
def dream(self):
return '吃一个免费的西瓜'
def laowang1(request):
person=Person('老王',18)
return render(request,'laowang1.html',{'person':person})
urls.py
文件
from django.contrib import admin
from django.urls import path
from day02_django02 import views
urlpatterns = [path('laowang/', views.laowang1),]
-
属性或方法查询:如果传递一个对象:
变量名.变量名(此变量名有可能是属性,有可能是无参数方法名称且有返回值的方法)
-
数字索引查询:如果传递一个列表:
变量名.索引(从0开始)
的形式获取列表中的元素。
例子1:将页面中的{{ name_lst.0}}},{{ name_lst.1}},{{ name_lst.2}} 替换成具体的值。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{{ name_lst.0}}-->{{ name_lst.1 }}-->{{ name_lst.2 }}
</body>
</html>
views.py
文件
from django.shortcuts import render
class Person(object):
def __init__(self,name,age):
self.name=name
self.age=age
def dream(self):
return '吃一个免费的西瓜'
def laowang2(request):
name_list=['安其拉','鲁班','狄仁杰']
return render(request,'laowang2.html',{'name_lst':name_list})
urls.py
文件
from django.contrib import admin
from django.urls import path
from day02_django02 import views
urlpatterns = [path('laowang/', views.laowang2),]
例子2:
将页面中的{{ per.0.name} },{{ per.1.name }},{{ per.2.name }} 替换成具体的值。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{{ per.0.name }}->>{{ per.1.name }}-->>{{ per.2.name }}
</body>
</html>
views.py
文件
from django.shortcuts import render
class Person(object):
def __init__(self,name,age):
self.name=name
self.age=age
def dream(self):
return '吃一个免费的西瓜'
def laowang3(request):
person1=Person('老王',18)
person2=Person('老边',18)
person3=Person('老刘',18)
person_lst=[person1,person2,person3]
return render(request,'laowang3.html',{'per':person_lst})
urls.py
文件
from django.contrib import admin
from django.urls import path
from day02_django02 import views
urlpatterns = [path('laowang/', views.laowang3),]