视图(View)是Django的MTV架构模式的V部分,主要负责用户请求和生成相应的响应内容,然后在页面或其他类型文档中显示。类似于MVC的C(控制器),主要处理功能和业务上的逻辑。
习惯使用视图函数来处理HTTP请求,就是在视图里定义函数,这种方式被称为FBV(Function Based Views)。
Django同时也植入了视图类,该功能封装了视图开发常用的代码,无须编写大量代码即可快速完成数据视图的开发,这种以类的形式实现响应和请求处理称为CBV(Class Based Views)。
商品类型表 - commodity_types
检查以下模型类是否已经定义,如果没有定义,请做相应定义,并进行数据迁移,即在数据库生成相应的表
商品类型模型 - Types
商品信息模型 - CommodityInfos
购物车模型 - CartInfos
订单模型 - OrderInfos
定义视图函数 - indexView 查看index功能模块的路由文件(子路由)
根据以上路由定义知,路由名index
对应的社图函数为indexView
,故在views.py
中定义视图函数indexView
。
indexView中10个变量说明
title变量:用于设置网页标签内容,用于html中的title标签中
classContent变量:控制导航栏样式,首页样式设置为class=’active’。
commodityInfos变量:查询模型CommodityInfos销量最高的前8条数据,显示在首页“今日必抢”栏目内。
types变量:查询模型Types的全部数据,用于c1, f1, g1的数据类型筛选。
c1变量:在变量types的基础上,筛选types中“儿童服饰”的所有数据,并以列表格式表示。
clothes变量:以c1做模型CommodityInfos查询条件,获取销量排名前5的数据,并显示在首页“宝宝服饰”栏目。
f1变量: 在变量types的基础上,筛选types中“奶粉辅食”的所有数据,并以列表格式表示。
food变量:以f1做模型CommodityInfos查询条件,获取销量排名前5的数据,并显示在首页“奶粉辅食”栏目。
g1变量: 在变量types的基础上,筛选types中“儿童用品”的所有数据,并以列表格式表示。
goods变量:以f1做模型CommodityInfos查询条件,获取销量排名前5的数据,并显示在首页“宝宝用品”栏目。
将types数据渲染到模板页面index.html上
采用for循环遍历types,显示效果如下图所示
修改views.py的indexView视图函数代码
修改index.html页面,注释掉显示动态数据的代码
运行程序,查看效果
访问首页,显示“Hello Django World~”
request参数:浏览器向服务器发送的请求对象,包含用户信息、请求内容和请求方法等。
template_name参数:设置模板文件名,用于生成网页内容。
context参数:对模板上下文(模板变量)赋值,以字典格式表示,默认情况下是一个空字典。
content_type参数:响应内容的数据格式,一般默认即可。
status参数:HTTP状态码,200默认。
using参数:设置模板引擎,用于解析模板文件,生成网页内容。
关键参数context,把视图函数中的变量传递给模板引擎,但当视图函数中变量过多时,传递不方便,故可使用Python内置语法locals()取代参数context。