1.模板层
1.1模板语法之变量
在 Django 模板中遍历复杂数据结构的关键是句点字符, 语法:
{{ var_name }}
在视图函数views.py中可以给,temprate模板中的temp_test.html传的参数有,列表、字典、日期对象、自定义对象等等传给模板函数。、
模板函数其实就是专门从视图函数中拿取数据,最后显示在网页显示出结果,也就是客户访问的结果。视图函数处理一些逻辑,给出一些视图函数需要的参数等等。
1.2从view.py中写参数传入,temprate模板中,模板中的html根据需要提取
view.py的代码:
from django.shortcuts import render, HttpResponse, redirect # Create your views here. def temp_test(request): import datetime name_666 = "马具强" # 字符串 list1 = ['张国成', "张俊林", "陈桂涛"] # 列表 dict1 = {'name': "张国城", "age": 8, "sex": "female"} # 字典 date = datetime.datetime.now() # 日期对象 print(date.year) class Person(object): # 自定义类 def __init__(self, name): self.name = name def eat(self): return "%s - chihuo" % self.name person_yuan = Person("yuan") # 自定义类对象 person_egon = Person("egon") person_alex = Person("alex") person_list = [person_yuan, person_egon, person_alex] return render(request, "temp_test.html", {"name": name_666, # 让你区分前后端变量的区别 'list1': list1, "dict1":None, "date": date, "person_list": person_list})
小结:可以从视图函数temp_test可以得出,客户端访问的url,关联的是temp_test,在处理响应的时候,视图函数返回给客户端一个
render()对象,(实际上就是HttpResponse的对象,其实就是请求与相应)
2.render这种HttpResponse对象返回的是,一个网页,从而需要去temprate中拿取模板,还有一点是,把模板需要的参数传给它,格式是:render的第三个参数,以字典的方式放入即可。
# 这个例子对应需要的是temprate中的 temp_test.html文件代码如下:
<h3>模板层</h3> <!-- 普通的变量 --> <h4>{{ name }}</h4> <hr> <!-- list --> <p>{{ list1 }}</p> <!-- 根据索引取值 .的形式 --> <p>{{ list1.0 }}</p> <hr> <!-- 字典 --> <p>{{ dict1 }}</p> <!-- 字典取值 直接.key 即可 --> <p>{{ dict1.name }}</p> <p>{{ dict1.sex }}</p> <!-- 对象 --> <hr> <p>{{ date.year }}</p> <hr> <!-- 对象的属性和方法直接点即可 --> <p>{{ person_list.0.name.upper}}</p> <p>{{ person_list.0.eat }}</p>
注意:当views中传入对象过来是以列表的形式传过来的,即是先 .数字(取出对应的对象).(属性/方法) # 如果是属性的话,可以直接调用upper转大写(可以使用内置函数)
注意:访问对象中的方法是没有加上括号的。(无参数方法)
小结:都是传入的参数,即是都是获取变量即可。获取变量规则{{var名字}}
运行结果: