django讲课笔记11:视图函数的请求和响应(代码片段)

howard2005 howard2005     2023-03-09     788

关键词:

零、本讲学习目标

  1. 掌握视图函数的编写
  2. 会使用GET和POST调用视图函数
  3. 会获取请求信息
  4. 会使用Render和HttpResponse响应请求

一、课程导入

  1. 对表进行增删改查
  2. 视图、视图函数和视图类
  • 视图(View)是Django的MTV架构模式的V部分,主要负责用户请求和生成相应的响应内容,然后在页面或其他类型文档中显示。类似于MVC的C(控制器),主要处理功能和业务上的逻辑。
  • 习惯使用视图函数来处理HTTP请求,就是在视图里定义函数,这种方式被称为FBV(Function Based Views)。
  • Django同时也植入了视图类,该功能封装了视图开发常用的代码,无须编写大量代码即可快速完成数据视图的开发,这种以类的形式实现响应和请求处理称为CBV(Class Based Views)。

二、新课讲授

(零)准备数据

1、商品类型表 - commodity_types

  • 执行插入记录的SQL语句
INSERT INTO `commodity_types` VALUES (1, '奶粉辅食', '进口奶粉');
INSERT INTO `commodity_types` VALUES (2, '奶粉辅食', '宝宝辅食');
INSERT INTO `commodity_types` VALUES (3, '奶粉辅食', '营养品');
INSERT INTO `commodity_types` VALUES (4, '儿童用品', '纸尿裤');
INSERT INTO `commodity_types` VALUES (5, '儿童用品', '婴儿湿巾');
INSERT INTO `commodity_types` VALUES (6, '儿童用品', '婴儿车');
INSERT INTO `commodity_types` VALUES (7, '儿童用品', '婴儿床');
INSERT INTO `commodity_types` VALUES (8, '儿童用品', '安全座椅');
INSERT INTO `commodity_types` VALUES (9, '儿童教育', '儿童玩具');
INSERT INTO `commodity_types` VALUES (10, '儿童教育', '早教书籍');
INSERT INTO `commodity_types` VALUES (11, '儿童教育', '育儿书籍');
INSERT INTO `commodity_types` VALUES (12, '儿童服饰', '童装');
INSERT INTO `commodity_types` VALUES (13, '儿童服饰', '童鞋');
INSERT INTO `commodity_types` VALUES (14, '儿童服饰', '配饰');
INSERT INTO `commodity_types` VALUES (15, '孕妈专区', '孕妇装');
INSERT INTO `commodity_types` VALUES (16, '孕妈专区', '孕妇护肤');
INSERT INTO `commodity_types` VALUES (17, '孕妈专区', '孕妇用品');

  • 查看商品类型表

2、商品信息表 - commodity_commodityinfos

  • 执行插入记录的SQL语句
INSERT INTO `commodity_commodityinfos` VALUES (1, '婴儿衣服加厚连体衣', '粉色', '童装', 199, 188, 1314, 1666, 666, '2020-02-24', 'imgs/p1.jpg', 'details/p1_details.jpg');
INSERT INTO `commodity_commodityinfos` VALUES (2, '儿童长袖加厚防寒加绒衫', '玫红', '童装', 121, 66, 1234, 2111, 599, '2020-02-24', 'imgs/p2.jpg', 'details/p2_details.jpg');
INSERT INTO `commodity_commodityinfos` VALUES (3, '婴儿实木摇摇床', '原木色', '婴儿床', 1099, 999, 2346, 1322, 333, '2020-02-24', 'imgs/p3.jpg', 'details/p3_details.jpg');
INSERT INTO `commodity_commodityinfos` VALUES (4, '婴儿防寒针织帽', '蓝色', '配饰', 50, 39, 2347, 4521, 899, '2020-02-24', 'imgs/p4.jpg', 'details/p4_details.jpg');
INSERT INTO `commodity_commodityinfos` VALUES (5, '婴儿秋冬连体衣冬装衣服', '粉色', '童装', 145, 111, 1341, 3412, 2354, '2020-02-24', 'imgs/p5.jpg', 'details/p5_details.jpg');
INSERT INTO `commodity_commodityinfos` VALUES (6, '男女宝宝秋冬新年套装', '红色', '童装', 123, 119, 2342, 232, 1233, '2020-02-24', 'imgs/p6.jpg', 'details/p6_details.jpg');
INSERT INTO `commodity_commodityinfos` VALUES (7, '外出服抱衣加厚冬季', '粉色', '童装', 166, 111, 213, 2341, 1233, '2020-02-24', 'imgs/p7.jpg', 'details/p7_details.jpg');
INSERT INTO `commodity_commodityinfos` VALUES (8, '宝宝衣服动物造型熊猫哈衣', '黑白色', '童装', 124, 121, 531, 1345, 879, '2020-02-24', 'imgs/p8.jpg', 'details/p8_details.jpg');
INSERT INTO `commodity_commodityinfos` VALUES (9, '澳洲进口Aptamil爱他美', '1段', '进口奶粉', 399, 366, 1233, 1231, 666, '2020-02-24', 'imgs/p9.jpg', 'details/p9_details.jpg');
INSERT INTO `commodity_commodityinfos` VALUES (10, '超薄干爽绿帮纸尿裤', '大码', '纸尿裤', 209, 159, 1234, 4321, 3333, '2020-02-24', 'imgs/p10.jpg', 'details/p10_details.jpg');
INSERT INTO `commodity_commodityinfos` VALUES (11, '婴儿面条宝宝辅食无添加', '面条', '宝宝辅食', 30, 20, 3211, 1231, 2152, '2020-02-24', 'imgs/p11.jpg', 'details/p11_details.jpg');
INSERT INTO `commodity_commodityinfos` VALUES (12, '宝宝零食儿童营养磨牙饼干', '饼干', '宝宝辅食', 66, 38, 1543, 1845, 3245, '2020-02-24', 'imgs/p12.jpg', 'details/p12_details.jpg');
INSERT INTO `commodity_commodityinfos` VALUES (13, '宝宝芝麻粉辅食调味拌饭', '辅食调味', '宝宝辅食', 59, 39, 1234, 3453, 2312, '2020-02-24', 'imgs/p13.jpg', 'details/p13_details.jpg');
INSERT INTO `commodity_commodityinfos` VALUES (14, '纽曼思海藻油DHA软胶囊', 'DHA软胶囊', '营养品', 499, 399, 3231, 3412, 1234, '2020-02-24', 'imgs/p14.jpg', 'details/p14_details.jpg');
INSERT INTO `commodity_commodityinfos` VALUES (15, '婴儿推车可坐可躺', '蓝色', '婴儿车', 888, 439, 1234, 1245, 2353, '2020-02-24', 'imgs/p15.jpg', 'details/p15_details.jpg');
INSERT INTO `commodity_commodityinfos` VALUES (16, '儿童安全座椅增高垫', '粉色', '安全座椅', 688, 588, 3421, 3644, 6245, '2020-02-24', 'imgs/p16.jpg', 'details/p16_details.jpg');
INSERT INTO `commodity_commodityinfos` VALUES (17, '80片纯水湿纸巾婴儿', '湿纸巾', '婴儿湿巾', 49.9, 29.9, 1235, 5674, 2312, '2020-02-24', 'imgs/p17.jpg', 'details/p17_details.jpg');
INSERT INTO `commodity_commodityinfos` VALUES (18, '儿童球类玩具室内特大号户外亲子', '10瓶2球', '儿童玩具', 69, 29.9, 666, 1986, 1569, '2020-02-24', 'imgs/p18.jpg', 'details/p18_details.jpg');

  • 查看商品信息表

(一)首页的视图函数

1、检查模型 - M

  • 检查以下模型类是否已经定义,如果没有定义,请做相应定义,并进行数据迁移,即在数据库生成相应的表。

(1)商品类型模型 - Types

(2)商品信息模型 - CommodityInfos

(3)购物车模型 - CartInfos

(4)订单模型 - OrderInfos

2、定义视图函数 - indexView

  • 查看index功能模块的路由文件(子路由)
  • 根据以上路由定义知,路由名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上

  • 采用for循环遍历types,显示效果如下图所示

  • 为了美观一点,将页面上的商品类型数据显示在表格里

课堂练习:在首页上以表格方式显示“儿童服饰”、“奶粉辅食”和“儿童用品”的商品信息

三、课堂小结

四、课后作业

五、拓展内容

62.django05——视图层(代码片段)

一、视图函数视图函数,属于Django的视图层,也就是我们之前将的Django生命周期中定义在views.py里的函数,是用来处理web请求信息以及返回响应信息的函数。视图函数只需要熟练掌握两个对象:请求对象HttpRequest和响应对象HttpResp... 查看详情

django之视图(代码片段)

...请求方式和基于类的处理请求方式。1.视图函数(FBV)fromdjango.httpimportHttpResponsedefhome(request):returnHttpResponse(‘OK‘)#在urls.py里写法:url(r‘^home/‘,views.home),2.视图类(CBV)(1)写法fromdjango.httpimportHttpResponsefromdjango.viewsimportViewclassM... 查看详情

django视图层(代码片段)

Django之视图层视图函数视图函数,简称视图,属于Django的视图层,默认定义在views.py文件中,是用来处理web请求信息以及返回响应信息的函数,所以研究视图函数只需熟练掌握两个对象即可:请求对象(HttpRequest)和响应对象(HttpResp... 查看详情

django之视图层(代码片段)

Django之视图层视图函数视图函数,简称视图,属于Django的视图层,默认定义在views.py文件中,是用来处理web请求信息以及返回响应信息的函数,所以研究视图函数只需熟练掌握两个对象即可:请求对象(HttpRequest)和响应对象(HttpResp... 查看详情

第九章django的视图(代码片段)

9.1.ViewDjango使用请求和响应对象来通过系统传递状态。当浏览器向服务端请求一个页面时,Django创建一个HttpRequest对象,该对象包含关于请求的元数据。然后,Django加载相应的视图,将这个HttpRequest对象作为第一个参数传递给视图... 查看详情

第九章django的视图(代码片段)

9.1.ViewDjango使用请求和响应对象来通过系统传递状态。当浏览器向服务端请求一个页面时,Django创建一个HttpRequest对象,该对象包含关于请求的元数据。然后,Django加载相应的视图,将这个HttpRequest对象作为第一个参数传递给视图... 查看详情

django----------视图层(代码片段)

目录视图函数HttpRequest对象HttpResponse对象JsonResponseCBV和FBV简单文件上传视图函数一个视图函数,简称视图,是一个简单的Python函数,它接受Web请求并且返回Web响应。响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个... 查看详情

flask学习笔记(-模板)(代码片段)

为什么使用模板视图函数的作用很明确,即生成请求的响应。但Flask视图函数的两个完全独立的作用(处理逻辑和页面)却被融在一起。例如,用户在网站中注册了一个新账户。用户在表单中输入电子邮件地址和密码,然后点... 查看详情

django基础三之视图函数(代码片段)

Django基础三之视图函数  本节目录一Django的视图函数view二CBV和FBV三使用Mixin四给视图加装饰器五Request对象六Response对象 一Django的视图函数view    一个视图函数(类),简称视图,是一个简单的Python函数(类),... 查看详情

django的请求生命周期

Django的请求生命周期:1、当用户在浏览器中输入url时,浏览器会生成请求头和请求体发给服务端2、服务端的wsgiref模块接收用户请求并将请求进行初次封装,然后将请求交给Django的中间件3、通过中间件之后将请求交给url,根据浏览... 查看详情

django--基础--django的view(视图)(代码片段)

目录Django的View(视图)一个简单的视图CBV和FBV给视图加装饰器Request对象和Response对象request对象Response对象JsonResponse对象Djangoshortcutfunctions1,Django的View(视图)一个视图函数(类),简称视图,是一个简单的Python函数(类),它... 查看详情

django的view(视图)和路由系统(代码片段)

一、Django的View(视图)1、介绍一个视图函数(类),简称视图,是一个简单的Python函数(类),它接受Web请求并且返回Web响应。响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片。无论视图本... 查看详情

django的view(视图)和路由系统(代码片段)

Django的View(视图)一个视图函数(类),简称视图,是一个简单的Python函数(类),它接受Web请求并且返回Web响应。响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片。无论视图本身包含什... 查看详情

django视图

视图层一个视图函数,简称视图,是一个简单的Python函数,它接受Web请求并且返回Web响应。响应可以是一个HTML页面、一个404错误页面、重定向页面、XML文档、或者一张图片...无论视图本身包含什么逻辑,都要返回响应。代码写... 查看详情

django框架之视图函数(views)(代码片段)

...象:http请求:HttpRequest对象http响应:HttpResponse对象所在位置:django.httpHttpRequest对象的属性和方法:path:请求页面的全路径,不包括域名;method:请求中使用的HTTP方法的字符串表示(全大写表示,例如:GET,POST);GET:包含所有HTTPGET参数的类字典对... 查看详情

django框架--视图系统(代码片段)

目录一、视图函数的理解二、视图函数的定位三、请求对象HttpRequest四、响应对象HttpResponse一、视图函数的理解视图函数的作用是,对指定的url执行业务逻辑,视图函数将会作为model层和template层的桥梁,最主要的逻辑是操作数据... 查看详情

django入门学习--探究视图(views)(代码片段)

??视图(View)是Django的MTV架构模式的V部分,主要负责处理用户请求和生成相应的响应内容,然后在页面或其他类型文档中显示。也可以理解为视图是MVC架构里面的C部分(控制器),主要处理功能和业务上的逻辑。构建网页内容... 查看详情

django----视图和路由(代码片段)

django的view(视图)  一个视图函数,简称视图,是一个简单python函数,他接受web请求并且返回一个响应  响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片。  无论视图本身包含什么逻辑,... 查看详情