django学习笔记6-视图函数的请求和响应

本文介绍了Django中视图函数的响应处理,包括HttpRESPONSE和使用render()函数渲染模板页面。通过示例详细讲解了如何在视图中处理GET和POST请求,以及如何将数据传递给模板。同时探讨了当数据量较大时,如何利用render简化代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首页的视图函数

  • 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差不多。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值