首页的视图函数
- 1检查模型M
检查以下模型类是否已经定义,如果没有定义,请做相应定义,并进行数据迁移,即在数据库生成相应的表。
商品类型模型Types商品信息模型CommodityInfo
购物车模型CartInfos
- 2定义视图函数indexView
根据以上路由定义知,路由名index对应的社图函数为indexView,故在views.py中定义视图函数indexView.
indexView中10个变量说明:
- 1)title变量:用于设置网页标签内容,用于html中的title标签中
- 2)classContent变量:控制导航栏样式,首页样式设置为class=’active’。
- 3)commodityInfos变量:查询模型CommodityInfos销量最高的前8条数据,显示在首页“今日必抢”栏目内。
- 4)types变量:查询模型Types的全部数据,用于c1,f1,g1的数据类型筛选。
- 5)c1变量:在变量types的基础上,筛选types中“儿童服饰”的所有数据,并以列表格式表示。
- 6)clothes变量:以c1做模型CommodityInfos查询条件,获取销量排名前5的数据,并显示在首页“宝宝服饰”栏目。
- 7)f1变量: 在变量types的基础上,筛选types中“奶粉辅食”的所有数据,并以列表格式表示。
- 8)food变量:以f1做模型CommodityInfos查询条件,获取销量排名前5的数据,并显示在首页“奶粉辅食”栏目。
- 9)g1变量: 在变量types的基础上,筛选types中“儿童用品”的所有数据,并以列表格式表示。
- 10)goods变量:以f1做模型CommodityInfos查询条件,获取销量排名前5的数据,并显示在首页“宝宝用品”栏目。
- 最后return 设置返回值,把视图函数中定义的变量传递给模型,然后由模板引擎对这些变量进行解析并渲染到网页上。
- 任务:将types数据渲染到模板页面index.html上
- 遍历types,显示效果如下所示
- 最常见的是GET请求和POST请求,二者都是可带参数:
- GET带参数,如
http://127.0.0.1:8000/index?username=heihei&password=123456
-
POST带参数,以表单形式传递
获取请求相关信息 -
修改view.py 的indexView视图函数代码
-
修改index.html页面,注释掉显示动态数据的代码
-
运行程序,查看效果
视图函数的响应
1,HttpRESponse
(1)响应表
响应类型 | 说明 |
---|---|
HttpResponse(‘响应内容’) | 状态码200,请求已成功被服务器接收 |
HttpResponseRedirect(/"’) | 状态码302,重定向首页地址 |
HttpResponsePermanentRedirect(/’) | 状态码301,永久重定向首页地址 |
HttpResponseBadRequest(‘400’) | 状态码400,访问的页面不存在或请求错误 |
HttpResponseNotFound(‘404’) | 状态码404,网页不存在或网页的URL失败 |
HttpResponseForbidden(‘403’) | 状态码403,没有访问权限 |
HttpResponseNotAllowed(‘405’)状态码405, | 不允许使用该请求方式 |
HttpRespgnseServerError(‘500’)状态码500, | 服务器内容错误 |
JsonHttpResponse ({foo’‘bar’})默认状态码200, | 响应内容为JSON数据 |
StreamingHttpResponse()默认状态码200, | 响应内容以流式输出 |
(2),案例演示-HttpRESponse
2,使用render()函数渲染模板页面
(1)render()函数参数
render(`request`,`template_name`,context=None,content_type=None,status=None,using=None)
- 问题:200之后的28是怎么回事?就是响应内容的字符数 -
Hello Django World~
- 如果使用以上方式返回数据,当数据量大时,对视图函数的代码量增加厉害,所以django增加了render、render_to_response和redirect函数。render_to_response已经废弃掉
(deprecated),与render差不多。