Django的模版系统
一丶MTV和MVC
MTV:在Django框架中使用
Model(模型):负责业务对象与数据库的对象(ORM)
Template(模版):负责如何把页面展示给用户
View(视图):负责业务逻辑,并在适当的时候调用Model和Template
此外,Django还有一个urls分发器,它的作用是将一个个URL的页面请求分发给不同的view处理,view再调用相应的Model和Template
MVC:软件开发规范
MVC,全名是Model View Controller,是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller),具有耦合性低、重用性高、生命周期成本低等优点。
M: model 模型 操作数据库
V: view 视图 展示页面 HTML
C: controller 控制器 调度 业务逻辑
二丶常用语法
在Django框架模板中存在两种特殊的标记:
{{ 变量 }} : 表示获取变量的值
{% 逻辑 %} : 表示逻辑相关操作
变量:
{{ 变量 }},由字母和下划线组成.
. (点) 在模版语言中有特殊的意义,可获取对象的属性值,也可调用对象的方法.
#
def index(request):
res = {
# 传数字
'num': 123,
# 传字符串
'string1': '中文字符',
'string2': 'abcd',
# 传列表
'lis': ['熊大', '熊二', '熊三'],
# 传字典
'dic': {'name': '张哥', 'age': 33},
# 传对象
'p1': Person('Pig', 32)
}
return render(request, 'index.html', res)
# html页面
<h1>使用 { {变量} } 展示数据</h1>
<p>{{ num }}</p>
<p>{{ string1 }}</p>
<p>{{ string2 }}</p>
# <!--支持.的形式根据索引进行取值-->
<p>{{ string2.0 }}</p>
<p>{{ lis }}</p>
# <!-- 列表也支持.的形式根据索引进行取值 -->
<p>{{ lis.1 }}</p>
# <!--支持字典的所有方法,不需要加(),也支持.的形式取键对应的值-->
<p>{{ dic }}</p>
<p>{{ dic.name }}</p>
<p>{{ dic.keys }}</p>
<p>{{ dic.values }}</p>
# <!--对象单独的是内存地址,-->
<p>{{ p1 }}</p>
# <!--对象的属性-->
<p>{{ p1.name }}</p>
<p>{{ p1.age }}</p>
# <!--对象的方法,不需要加()-->
<p>{{ p1.talk }}</p>
# <!--若变量不存在,不会报错,得到是一个空的字符串.-->
<p>{{ xxx }}</p>
#PS:
当模板系统遇到一个(.)时,会按照如下的顺序去查询:
1.在字典中查询