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.pswp.cn/news/915657.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/915657.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android 12 的 aidl for HAL 开发示例

说明:aidl for HAL 这种机制,可以自动生成java代码,app调用可以获取中间过程的jar包,结合反射调用 ServiceManager.getService 方法,直接获取 HAL 服务,不再需要费力在framework层添加代码,方便…

网络安全渗透攻击案例实战:某公司内网为目标的渗透测试全过程

目录一、案例背景二、目标分析(信息收集阶段)🌐 外部信息搜集🧠 指纹识别和端口扫描三、攻击流程(渗透测试全过程)🎯 步骤1:Web漏洞利用 —— 泛微OA远程命令执行漏洞(CV…

AI视频-剧本篇学习笔记

1.提示词万能框架是什么:ai扮演的角色做什么:解决什么问题怎么做:标准2、剧本模版假设你是一位拥有30年电影拍摄经验的世界顶级导演,拥有丰富的电影拍摄经验和高超的电影拍摄技术,同时也擅长各种影片的剧本创作。我需要你仔细阅读…

A316-HF-DAC-V1:专业USB HiFi音频解码器评估板技术解析

引言 随着高解析度音频的普及,对高品质音频解码设备的需求日益增长。本文将介绍一款专为USB HiFi音频解码器设计的专业评估板——A316-HF-DAC-V1,这是一款基于XMOS XU316技术的高性能音频解码评估平台。产品概述 A316-HF-DAC-V1是一款专业的USB HiFi音频…

超低延迟RTSP播放器在工业机器人远程控制中的应用探索

技术背景 在智能制造高速发展的今天,工业机器人已经从单一的生产作业工具,转变为协作化、智能化的生产伙伴。无论是高精度的多关节机械臂、自主导航的移动机器人,还是与人协同工作的协作机器人,都越来越多地被应用于智能工厂、仓…

Elasticsearch Java 8.x 的聚合 API 及子聚合的用法

背景 Elasticsearch 版本发布的很勤, API 客户端的用法各个版本之间差异也是很大。尤其是 Elasticsearch 8.x 版本直接废弃了 RestHighLevelClient 对象。 Query 和 Aggregation 的 Builder 的用法也有变化。 本文记录项目升级 Elasticsearch API 到 8.x 版本时聚合…

Dify功能熟悉

Dify功能熟悉 文章目录Dify功能熟悉一、介绍1.1 快速开始1.2 官方文档二、workflow2.1 开始和结束2.2 简单示例三、节点3.1 节点一览表3.2 节点-----开始3.3 节点-----LLM3.4 知识检索(增强回答准确性)3.5 Agent智能体3.6 问题分类器3.7 http四、工具&am…

app引导页设计要点与交互细节详解

在移动应用的设计中,用户第一次打开APP时看到的往往就是app引导页。它不仅是品牌与用户接触的第一道界面,也是决定用户是否愿意继续探索的关键入口。一个设计合理、信息传达清晰的app引导页,能够帮助产品建立专业感与品牌价值,同时…

香港服务器SSH安全加固方案与密钥认证实践

香港服务器SSH安全加固方案与密钥认证实践在数字化时代,服务器安全成为企业不可忽视的重要议题。香港服务器因其地理位置和网络自由优势备受青睐,但同时也面临各种网络安全威胁。本文将深入探讨香港服务器SSH安全加固的核心方案,重点解析密钥…

Python的界面美化库 QDarkStyleSheet

Python的界面美化库 QDarkStyleSheet1、官网先看效果2、github地址3、动态切换主题用法效果代码1、官网先看效果 2、github地址 https://github.com/ColinDuquesnoy/QDarkStyleSheet?tabreadme-ov-file https://qdarkstylesheet.readthedocs.io/en/latest/screenshots.html …

同步本地文件到服务器上的Docker容器

同步本地文件到服务器上的Docker容器 要将本地文件同步到服务器上的Docker容器中,有几种常用方法: 1. 使用 docker cp 命令 # 将本地文件复制到运行中的容器 docker cp /本地/文件/路径 容器名或ID:/容器内/路径# 示例 docker cp ./app.py mycontainer:/…

[学习] 笛卡尔坐标系的任意移动与旋转详解

笛卡尔坐标系的任意移动与旋转详解 文章目录笛卡尔坐标系的任意移动与旋转详解**1. 笛卡尔坐标系基础****2. 坐标变换原理****2.1 平移变换****2.2 旋转变换****3. 组合变换**Python仿真与动态展示**动画说明**:**关键数学原理**:1. 笛卡尔坐标系基础 笛…

论文笔记:Parameter Competition Balancing for Model Merging

neurips 20241 intro近年来,模型融合(model merging)技术迅速发展,使得可以将多个分别针对不同任务微调后的模型直接集成为一个统一模型,从而实现多任务处理能力,而无需重新访问原始训练数据。然而&#xf…

逆向难度真相:仅用IDA静态分析的极限挑战

逆向难度真相:仅用IDA静态分析的极限挑战 纯IDA逆向难度重排(从难到易) Python > Go > Java > E语言 > CPython (地狱级难度) IDA困境: 主逻辑完全封装在PYZ/PYC资源中,IDA无法解析字节码结构字符串表只显…

vxe-table 通过配置 ajax 方式自动请求数据,适用于简单场景的列表

vxe-table 通过配置 ajax 方式自动请求数据,适用于简单场景的列表 当系统中很多页面都是简单列表时,每次都要手动去请求接口后再赋值,过程就会比较冗余繁琐。解决方式一般就是将封装一下。本章的方式是通过 vxe-grid 配置 ajax 来实现自动请求…

Zabbix 企业级分布式监控系统深度解析

一、监控系统核心认知1.1 监控的本质与价值监控(Monitoring)的核心是 “检测与预防”,在 IT 运维中占据约 30% 的权重。其核心价值体现在:风险预判:通过实时监测指标异常,提前发现潜在故障(如服…

使用 .NET 6.0 的简单 WebSocket 客户端和服务器应用程序

几个月前,有同事来找我,问能否用 .NET 创建一个简单的 WebSocket 服务器(以及之后的客户端)。据我了解,他想用它来控制对方电脑上的进程。或许对其他人也有用,所以我把它发布在这里。让我们从服务器开始。我…

【ASP.NET Core】ASP.NET Core中Redis分布式缓存的应用

系列文章目录 链接: 【ASP.NET Core】REST与RESTful详解,从理论到实现 链接: 【ASP.NET Core】深入理解Controller的工作机制 链接: 【ASP.NET Core】内存缓存(MemoryCache)原理、应用及常见问题解析 文章目录系列文章目录前言一、Redis1.1 …

5.6 指令流水线 (答案见原书 P267)

5.6 指令流水线 (答案见原书 P267) 01. 下列关于流水CPU基本概念的描述中,正确的是( D )。 题目原文 下列关于流水CPU基本概念的描述中,正确的是( )。 A. 流水CPU是以空间并行性为原理构造的处理器 B. 流水…

NIO简单介绍和运用

NIO简单介 NIO 非阻塞IO模型,基于缓冲区(Buffer)读写数据,读写后的数据通过通道(Channel)进行传输,采用选择器(Selector)管理多个通道从而实现高并发。 核心组件:1. Buffer 为一个内存数组作为数据容器,代替传统的Inpu…