前言
html是一个静态页面,但是我们不可能把页面上所有的内容都写死,有些是需要动态传参的,根据传参内容作相应的显示,django模板可以实现。
模板语言
组成:HTML+逻辑控制代码
模板是html页面,可以根据视图中传递的数据填充值
在模板中访问对象成员时,都以属性的方式访问,即方法也不能加括号
在模板中访问视图传递的数据格式有:
{{输出值、变量、对象.属性、对象.方法 }}
{ %执行代码段% }
django_study.app01.views.py:新建一个template_study视图函数
class Person():
def __init__(self,name):
self.name = name
def play(self):
return "playing"
def template_study(request):
name = "karry"
p = Person("suner")
num_list = [10, 20, 30, 40]
user_dict = {"name":"wang", "age":19}
# locals()不需要引用上下文即键值对,一个locals()可以将所有内容返回至前端
return render(request, "template_study.html", locals())
django_study.django_study.urls:绑定url与视图函数
url(r'^template_study/$',template_study),
在django_study.templates目录下新建template_study.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>变量查询</title>
</head>
<body>
<p>定义的name值为:{{ name }}</p>
<!--列表取值,列表名.索引-->
<p>取出列表第一个值:{{ num_list.0 }}</p>
<!--字典取值,字典名.键名-->
<p>取出字典中的年龄:{{ user_dict.age }}</p>
<!--通过属性可以调用-->
<p>调用类属性name:{{ p.name }}</p>
<!--通过方法可以调用,方法默认当属性一样用,没有括号-->
<p>调用类方法play:{{ p.play }}</p>
</body>
</html>
启动状态访问:127.0.0.1:8000/template_study