当前位置: 首页 > news >正文

Django母婴商城项目实践(七)- 首页数据业务视图

7、首页数据业务视图

1、介绍

  • 视图(View)是Django的MTV架构模式的V部分,主要负责处理用户请求和生成相应的响应内容,然后在页面或其他类型文档中显示。
  • 也可以理解为视图是MVC架构里面的C部分(控制器),主要处理功能和业务上的逻辑。我们习惯使用视图函数处理HTTP请求,即在视图中定义def函数,这种方式称为FBV(Function Base View,基于函数)。
  • Web开发是一项无聊且单调的工作,特别是在视图功能编写方面更为显著。为了减少这种痛苦Django 植入了视图类这一功能,该功能封装了视图开发常用的代码,无须编写大量代码即可快速完成数据视图的开发,这种以类的形式实现响应与请求处理的方式称为CBV(Class Base View,基于类)

2、首页的视图函数

  • 前面我们已为项目babys定义了路由信息和数据模型,本节将在此基础上编写视图函数。由于项目babys一共有6个网页(网站首页 index.html、用户注册登录页 login.html、商品列表页面commodity.html、商品详情页面 details.html、购物车页面 shopcart.html、个人中心页面shopper.html),并且每个网页的视图业务逻辑各不相同,为了让读者更好地理解Django的视图功能,我们从网站首页的视图业务逻辑分析并学习视图的定义过程。

  • 编写网站首页的视图业务逻辑之前,确保项目babys已定义路由index,并分别定义了模型Types、CommodityInfos、CartInfos 和 OrderInfos,所有模型执行了数据迁移,在MysQL数据库中生成相应的数据表。

    1. 配置项目应用index的urls.py文件的路由

      from django.urls import path
      from .views import *urlpatterns = [# 基于FBV(视图函数)实现函数视图的路由path('', 'indexView', name='index'),
      ]
      
    2. index设置视图函数名为indexView,因此在项目应用index的views.py 文件中定义视图函数indexView,定义过程如下:

      from django.shortcuts import render
      from commodity.models import CommodityInfos, Types# 视图函数
      def indexView(request):title = '首页'    # 选项卡的标题# 1 获取最新商品(按照销量降序排列)commodityInfos = CommodityInfos.objects.order_by('-sold').all()[:8]# 2 获取所有类别types = Types.objects.all()# 1F 宝宝服饰cl = [x.seconds for x in types if x.firsts == "儿童服饰"]clothes = CommodityInfos.objects.filter(types__in=cl).order_by('-sold')[:5]# 2F 奶粉辅食fl = [x.seconds for x in types if x.firsts == "奶粉辅食"]foods = CommodityInfos.objects.filter(types__in=fl).order_by('-sold')[:5]# 3F 儿童用品gl = [x.seconds for x in types if x.firsts == "儿童用品"]goods = CommodityInfos.objects.filter(types__in=gl).order_by('-sold')[:5]return render(request, 'index.html', locals())
      
    3. 在 templates目录下创建 index.html


3、视图函数请求对象

  • 网站是根据用户请求来输出相应的响应内容的,用户请求是指用户在浏览器上访问某个网址链接的操作,浏览器会根据网址链接信息向网站发送HTTP请求,那么,当Django接收到用户请求时,它是如何获取用户请求信息的呢?

1 请求方式

  • 当在浏览器上访问某个网

http://www.dtcms.com/a/287262.html

相关文章:

  • QT窗口(8)-QFileDiag
  • 大模型 Function Call 的实现步骤及示例详解
  • MySQL EXPLAIN深度解析:优化SQL性能的核心利器
  • iOS 通知机制及底层原理
  • Java 大视界 -- Java 大数据机器学习模型在自然语言处理中的对话系统多轮交互优化与用户体验提升(351)
  • 【设计模式C#】状态模式(用于解决解耦多种状态之间的交互)
  • 微服务学习(六)之分布式事务
  • 微服务的编程测评系统-网关-身份认证-redis-jwt
  • Spring Boot 与微服务详细总结
  • Error:HTTP Status 405 - HTTP method POST is not supported by this URL
  • Javascript进程和线程通信
  • Uniapp之键盘弹窗
  • day43 CNN及Grad-CAM实战——以Intel Image Classification为例
  • JAVA中的Collections 类
  • [论文阅读] 人工智能 + 软件工程 | 强化学习在软件工程中的全景扫描:从应用到未来
  • ABP VNext + Temporal:分布式工作流与 Saga
  • 当OT遇见IT:Apache IoTDB如何用“时序空间一体化“破解工业物联网数据孤岛困局
  • 时序数据库选型实战:Apache IoTDB技术深度解析
  • Bicep入门篇
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘pillow’问题
  • C/C++---文件读取
  • kotlin部分常用特性总结
  • Node.js net.Socket.destroy()深入解析
  • 海思3516cv610 NPU学习
  • 【C语言进阶】题目练习(3)
  • kafka--基础知识点--6.1--LEO、HW、LW
  • Validation - Spring Boot项目中参数检验的利器
  • web.m3u8流媒体视频处理
  • Flutter基础(前端教程①③-单例)
  • 定时器与间歇函数