首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

基于类通用视图:ListView 和 DetailView

对处理首页视图函数来说,虽然其处理对象一个是文章,另一个是帖子,但是其处理过程是非常类似的。首先是数据库取出文章或者帖子列表,然后将这些数据递给模板渲染模板。...将 index 视图函数改写为类视图 针对这种数据获取某个模型列表数据(比如这里 Post 列表)视图,Django 专门提供了一个 ListView 类视图。...比如这里 IndexView 功能是数据获取文章(Post)列表,ListView 就是数据获取某个模型列表数据,所以 IndexView 继承 ListView。...指定这个视图渲染模板。 context_object_name。指定获取模型列表数据保存变量名。这个变量会被传递给模板。...DetailView 除了数据获取模型列表数据外,数据库获取模型一条记录数据也是常见需求。比如查看某篇文章详情,就是数据获取这篇文章记录然后渲染模板

2.6K70
您找到你想要的搜索结果了吗?
是的
没有找到

Django性能之道:缓存应用与优化实战

Django,缓存是一个核心功能,它允许开发者轻松地将经常访问数据存储在内存,以便快速检索。...获取缓存数据:cache.get(key)方法用于从缓存检索数据,根据缓存键获取对应值。 删除缓存数据:cache.delete(key)方法用于删除指定缓存键对应数据。...在Django,通过优化QuerySet和ORM查询,可以显著提升数据库操作效率。 1....Cache Refresh操作:当缓存数据过期或需要更新时,可以通过刷新操作来更新缓存数据,例如重新数据库获取最新数据更新缓存。 3....可以使用轮询、定期任务或事件驱动方式进行预热。 懒加载(Lazy Loading) :对于只在某些情况下访问数据,当用户第一次请求时才后端加载缓存,而不是一开始就加载所有数据

7810

django 1.8 官方文档翻译: 2-6-4 数据库访问优化

用唯一被或索引列来检索独立对象 有两个原因在get(),用带有unique或者db_index检索独立对象。首先,由于查询经过了数据索引,所以会更快。...如果查询匹配到多于一个对象,它会在数据遍历和检索所有这些对象。如果记录返回了成百上千个对象,代价是非常大。如果数据库运行在分布式服务器上,网络开销和延迟也是一大因素,代价会是它们组合。...一次性检索你需要任何东西 在不同位置多次访问数据库,一次获取一个数据集,通常来说不如在一次查询获取它们更高效。如果你在一个循环中执行查询,这尤其重要。...所以: 使用QuerySet.select_related()和prefetch_related() 充分了解使用select_related()和prefetch_related(): 在视图代码...不要不分析数据库就盲目使用延迟字段,因为数据库必须磁盘读取大多数非text和VARCHAR数据,在结果作为单独一行,即使其中列很少。

1.1K30

Django小技巧03: 优化数据库查询

当我们调用这个 queryset(unpaid_invoices) 才会真正执行到数据库查询。通常情况下, 当我们去遍历这个 Queryset 就会发生这种情况, 即 queryset 开始执行。...检索invoices所有对象一条查询, 和每个invoice供应商一次查询, 共计101条。...当然, 可以使用select_related方法, 来减轻这种不期望影响,以便在单次数据查询检索所有必要信息。...('vendor').filter(status='UNPAID') 这样, Django ORM 将会在同一查询为每个发票检索供应商数据.因此这种情况不需要额外查询,这样可以为您应用程序出色性能提升...推荐一个可以跟踪数据库查询调试工具Django Debug Toolbar 阅读更多关于Django QuerySet API文档. Django Documentation

96020

基于 Django 个人网站(4)

上回说到,虽然已经基本上把显示格式改差不多了,但是界面还是不够美观,同时也没有实现分类页面和检索文章页面,今天我们先来实现分类页面和检索文章页面。 ?...,代码如下: path('categories/', CategoryView.as_view()) 最后去对应模板文件增加带有超链接导航栏,代码如下: ...=keyword)) 我为了性能考虑,就不从文章内容匹配关键字了,只标题和摘要匹配一下,分类也不需要考虑,一篇文章对应多个分类,模糊检索本来就很耗费时间,多个分类就对应了多个模糊检索。...,接下来我就给出视图、模板和 URL 完整代码,首先是视图 personal_website\views.py,代码如下: from django.db.models import Q from django.views.generic...接下来我们就尝试搜索,在搜索框输入一个东西,看看是否可以被检索到,我在这里直接输入 2,然后点击搜索,最后搜索结果如图所示。 ?

1.1K20

Django 官方推荐姿势:类视图

对处理首页视图函数来说,虽然其处理对象一个是文章,另一个是帖子,但是其处理过程是非常类似的:首先是数据库取出文章或者帖子列表,然后将这些数据递给模板渲染模板。...将 index 视图函数改写为类视图 针对这种数据获取某个模型列表数据(比如这里 Post 列表)视图,Django 专门提供了一个 ListView 类视图。...比如这里 IndexView 功能是数据获取文章(Post)列表,ListView 就是数据获取某个模型列表数据,所以 IndexView 继承 ListView。...template_name:指定这个视图渲染模板。 context_object_name:指定获取模型列表数据保存变量名,这个变量会被传递给模板。...DetailView 除了数据获取模型列表数据外,数据库获取模型一条记录数据也是常见需求。比如查看某篇文章详情,就是数据获取这篇文章记录然后渲染模板

1.3K20

Django内置通用类视图及实例

,各种有用对象被存储在self上,同request(self.request)一样,其中包含了URLconf获取到位置参数(self.args)和关键字参数(self.kwargs)....属性: model: 视图要显示模型 queryset: 表示对象一个查询集.queryset值优先于model值. template_name: 字符串表示模板名称. context_object_name...: 指定在上下文中使用变量名称. pk_url_kwarg: URLconf,包含逐渐关键字参数名称.默认为'pk'. get_context_data:返回显示对象上下文数据....None):返回该视图要显示单个对象.如果提供了queryset,该queryset将作为对象查询源,否则,将使用get_queryset().get_object()视图所有参数查找pk_url_kwarg...context_object_name = 'employee_detail' #指定获取模型列表数据保存变量名。这个变量会被传递给模板

2.9K40

Django内置通用类视图CBV及示例

,各种有用对象被存储在self上,同request(self.request)一样,其中包含了URLconf获取到位置参数(self.args)和关键字参数(self.kwargs)....属性: model: 视图要显示模型 queryset: 表示对象一个查询集.queryset值优先于model值. template_name: 字符串表示模板名称. context_object_name...: 指定在上下文中使用变量名称. pk_url_kwarg: URLconf,包含逐渐关键字参数名称.默认为'pk'. get_context_data:返回显示对象上下文数据....None):返回该视图要显示单个对象.如果提供了queryset,该queryset将作为对象查询源,否则,将使用get_queryset().get_object()视图所有参数查找pk_url_kwarg...context_object_name = 'employee_detail' #指定获取模型列表数据保存变量名。这个变量会被传递给模板

3.2K10

后端框架学习-Django

转化器 path转换器 作用:若转换器类型匹配到对应类型数据,则将数据按照关键字方式传递给视图函数 path(‘page/int:page...参数=值&参数=值"\> + form表单method为get GET请求方法,如果有数据需要传递给服务器,通常会使用查询字符串传递。...在该模式下依然存在控制层C,即主路由 Django模板模板层创建 模板:根据字典数据动态变化html网页,根据视图中传递字典数据动态生成相应html页面 模板配置: 创建模板文件夹 ...在视图函数 from django.shortcuts import render return render(request,'模板文件名',字典数据) 视图层与模板层之间交互 视图函数可以将Python...Django 同样支持方法串联,以下方法在返回QuerySet后均可使用方法串联,且最终都会按照SQL顺序对数据库进行操作。 print(QuerySet.query)将取得实际SQL语句。

9.4K40

Django添加全文检索功能

工作原理是计算机索引程序通过扫描文章每一个词,对每一个词建立一个索引,指明该词在文章中出现次数和位置,当用户查询时,检索程序就根据事先建立索引进行查找,并将查找结果反馈给用户。...这个过程类似于通过字典检索字表查字过程。...haystack是django开源搜索框架,该框架支持Solr、 Elasticsearch、 Whoosh、Xapian搜索引擎,其中whoosh是纯python编写全文检索引擎,在实际操作过程可以结合...haystack官方网站 whoosh文档 1.安装包 在Django虚拟环境安装django-haystack和whoosh包 pip install django-haystack==2.5.0...搜索出结果后,haystack会把相应上下文传递给模板文件,传递上下文中模板变量包括如下: query: 搜素关键字 page: 当前页page对象,遍历page对象获得是SearchResult

66210

Django实践-07日志调试,Django-Debug-Toolbar配置与sql优化

Django静态文件问题备注: 参考: Django测试开发-20-settings.pytemplates配置,使得APP下模板以及根目录下模板均可生效 解决django 多个APP时 static...‘filename’ 指向路径改为当前运行 Django 应用用户可写路径 配置三个记录器。 django,将所有信息传递给 console 处理程序。...5xx响应被视为错误消息;4xx响应被记录为警告消息;其他一切都被记录为INFO django.template - 与模板渲染相关日志消息 django.db.backends - 有与数据库交互产生日志消息...StaticFiles 静态文件加载情况 Templates 模板相关信息 Cache 缓存使用情况 Signals Django内置信号信息 Logging 被记录日志信息 SQL 向数据库发送...('good_count'), bad=Avg('bad_count')) 可见,DjangoORM框架允许我们用面向对象方式完成关系数据分组和聚合查询。

21310

37.Django1.11.6文档

首次对QuerySet进行求值 —— 同时发生数据库查询 ——Django 将保存查询结果到QuerySet缓存返回明确请求结果(例如,如果正在迭代QuerySet,则返回下一个结果)。...当你最初获取数据时不知道是否需要这些特定字段情况下,如果你正在使用查询集结果,你可以告诉Django不要从数据检索它们。...实例化、处理和渲染表单 在Django 渲染一个对象时,我们通常: 在视图中获得它(例如,数据获取) 将它传递给模板context 使用模板变量将它扩展为HTML 标记 除了几个关键点不同之外...在模型实例不包含数据情况下,在模板对它做处理很少有什么用处。 但是渲染一个未填充表单却非常有意义 —— 我们希望用户去填充它。 所以当我们在视图中处理模型实例时,我们一般数据获取它。...它不提供任何HTTP头详细信息以防止缓存。 这意味着,如果页面数据检索数据,而且缓存中间件处于活动状态,页面可能显示过时信息。

24.3K80

Django】聚合在Django详细解析以及运用在企业级项目里方法

聚合 Django数据库抽象API描述了使用Django查询来添加、删除、查询和修改单个对象方法。然而,有时需要根据一组对象聚合您想要获得值。...第一种方法是整个QuerySet生成摘要值。例如,想计算所有在售图书平均价格。Django查询语法提供了一种描述所有藏书方法。 传递给聚合()参数描述了要计算聚合值。...在此示例,将计算Book模型上价格字段平均值。可以在QuerySet引用中找到可用聚合函数列表。 Aggregate()是QuerySet一个结束语句。...但是,有时要聚合值属于所查询模型关联模型。 在聚合函数中指定聚合字段时,Django允许您在筛选相关字段时使用相同双下划线符号。Django将处理需要检索和聚合相关值任何表连接。...很难直观地理解ORM如何将复杂查询集转换为SQL查询。因此,如果有疑问,请使用str(queryset.query)`检查SQL编写大量测试。

2K40

Web | Django 与 Chart.js 联用做出精美的图表

在本教程,我们将探讨如何使Django与Chart.js对话以及如何基于我们模型中提取数据来呈现一些简单图表。 ?...示例场景 我将使用与本教程如何使用Django ORM创建按查询分组示例相同示例,它是对本教程很好补充,因为实际上处理图表棘手部分是如何转换数据以便使其适合条形图/折线图等。...在这种策略, 我们将返回图表数据作为视图上下文一部分,使用Django模板语言将结果注入JavaScript 代码。...我Chart.js饼图文档获得了一个基本片段。...这种策略不是理想,但是效果很好。不好是,我们正在使用Django模板语言来干扰JavaScript逻辑。

5.5K30

django rest framework通用view

1. django View   首先,我们使用django自带view,获取一个课程列表: # drf是通过json格式进行数据交互,所以这里也返回json数据 import json from...APIView对django本身View进行封装,从上述代码,这样分析,两者差别看起来不是很大,但实际APIView做了很多东西,它定义了很多属性与方法,举几个例子 # 这三个是常用属性...,list方法会返回querysetjson数据。...两者存在一个即可,通过这个,在返回时,不必去指定某个serilizer 设置过滤器模板:filter_backends 设置分页模板:pagination_class 加入 lookup_field=...它们两者关系同1,要么设置属性,要么重载方法。它们功能在于获取某一个实例时,指定进来后缀是什么。

1K20
领券