Django中ListView 和 DetailView类的区别

devtools/2024/11/8 17:40:19/

在Django中,ListView 和 DetailView都是基于类的视图,在处理请求时通常会自动调用render_to_response函数,但由于项目需求不同,实现时需要重写render_to_response函数

ListView 和 DetailView介绍

  • ListView 介绍
  • 主要用于展示一个模型的多个实例(即一个查询集)。
  • 在处理请求时,会自动获取查询集并将其传递给模板。
  1. DetailView:
  • 主要用于展示一个模型的单个实例。
  • 在处理请求时,会根据 URL 中的参数获取特定对象并将其传递给模板。

render_to_response函数的使用案例

  • 继承ListView类
class SightTicketListView(ListView):# 景点门票列表paginate_by = 10def get_queryset(self):#     根据景点id查询sight_id = self.kwargs.get('pk',None)return Ticket.objects.filter(is_valid=True,sight=sight_id)def render_to_response(self, context, **response_kwargs):page_obj = context['page_obj']if page_obj is not None:data = serializers.TicketListSerializers(page_obj).to_dict()return http.JsonResponse(data)return NotFoundJsonResponse()
  • 继承DetailView类
class SightInfoDetailView(DetailView):# 当地址pk为none为空时,以下配置会生效pk_url_kwarg = None# url中参数的名称slug_url_kwarg = 'pk'# url中pk对应的哪一个字段(数据库中的字段)slug_field = 'sight__pk'# 景点详情def get_queryset(self):#     根据id获取景点详情return Info.objects.all()def render_to_response(self, context, **response_kwargs):page_obj = context['object']if page_obj is not None:data = serializers.SightInfoSerializer(page_obj).to_dict()return http.JsonResponse(data)return NotFoundJsonResponse()

context[‘page_obj’] 和 context[‘object’] 在 Django 的类视图中有不同的用途:

  • context[‘page_obj’]:
    • 主要用于 ListView 中,表示分页的对象,包含当前页面的数据以及分页信息。
    • 可以用于渲染分页导航,例如显示当前页、总页数等。
  1. context[‘object’]:

    • 用于 DetailView 中,表示当前请求的单个对象实例。
    • 直接用于渲染该对象的详细信息。

总结

  • 使用 context[‘page_obj’] 时,通常涉及多个对象的分页展示。
  • 使用 context[‘object’] 时,主要关注单个对象的展示。

http://www.ppmy.cn/devtools/132362.html

相关文章

GEE| 对Landsat 8 影像进行主成分分析

对 Landsat 8 影像进行主成分分析并实现可视化 // 定义感兴趣区域 var roi ee.FeatureCollection(users/yongweicao11/Dongguan2022);// 加载 Landsat 8 图像集合,并根据 ROI 和日期范围进行过滤 var imageL8 ee.ImageCollection("LANDSAT/LC08/C02/T1_TOA…

大数据数据存储层MemSQL, HBase与HDFS

以下是对 MemSQL、HBase 和 HDFS 的详细介绍,这些工具在分布式数据存储和处理领域有着重要作用。 1. MemSQL MemSQL(现称为 SingleStore)是一种分布式内存数据库,兼具事务处理(OLTP)和分析处理(OLAP)的能力,专为高性能实时数据处理设计。 1.1 核心特点 内存优先存储…

【MongoDB】MongoDB的Java API及Spring集成(Spring Data)

文章目录 Java APISpring 集成1. 添加依赖2. 配置 MongoDB3. 创建实体类4. 创建 Repository 接口5. 创建 Service 类6. 创建 Controller 类7. 启动 Spring Boot 应用8. 测试你的 API 更多相关内容可查看 Java API maven <dependency><groupId>org.mongodb</gr…

无人机干扰与抗干扰,无人机与反制设备的矛与盾

无人机干扰与抗干扰&#xff0c;以及无人机与反制设备之间的关系&#xff0c;可以形象地比喻为矛与盾的较量。以下是对这两方面的详细探讨&#xff1a; 一、无人机干扰与抗干扰 1. 无人机干扰技术 无人机干扰技术是指通过各种手段对无人机系统进行干扰&#xff0c;使其失去正…

基于卷积神经网络的农作物病虫害识别系统(pytorch框架,python源码)

更多图像分类、图像识别、目标检测等项目可从主页查看 功能演示&#xff1a; 基于卷积神经网络的农作物病虫害检测&#xff08;pytorch框架&#xff09;_哔哩哔哩_bilibili &#xff08;一&#xff09;简介 基于卷积神经网络的农作物病虫害识别系统是在pytorch框架下实现的…

mybatis源码解析-sql执行流程

1 执行器的创建 1. SimpleExecutor 描述&#xff1a;最基本的执行器&#xff0c;每次查询都会创建新的语句对象&#xff0c;并且不会缓存任何结果。 特点&#xff1a; 每次查询都会创建新的 PreparedStatement 对象。 不支持一级缓存。 适用于简单的查询操作&#xff0c;不…

Python | Leetcode Python题解之第542题01矩阵

题目&#xff1a; 题解&#xff1a; class Solution:def updateMatrix(self, matrix: List[List[int]]) -> List[List[int]]:m, n len(matrix), len(matrix[0])# 初始化动态规划的数组&#xff0c;所有的距离值都设置为一个很大的数dist [[10**9] * n for _ in range(m)]…

Qt低版本多网卡组播bug

原文地址 最近在某个项目中&#xff0c;发现了一个低版本Qt的bug&#xff0c;导致组播无法正常使用&#xff0c;经过一番排查&#xff0c;终于找到了原因&#xff0c;特此记录。 环境 Qt&#xff1a;5.7.0 mingw32操作系统&#xff1a;windows 11 现象 在Qt5.7.0版本中&…