上一篇Django 2.1.7 模型 - 条件查询 F对象 Q对象 聚合查询讲述了关于Django模型的介绍F对象、Q对象、聚合查询等功能。...其中查询集具有缓存、返回多个值、返回单个值、对查询集切片处理等功能。...缓存:使用同一个查询集,第一次使用时会发生数据库的查询,然后把结果缓存下来,再次使用这个查询集时会使用缓存的数据。 查询集的缓存 每个查询集都包含一个缓存来最小化对数据库的访问。...在新建的查询集中,缓存为空,首次对查询集求值时,会发生数据库查询,django会将查询的结果存在查询集的缓存中,并返回请求的结果,接下来对查询集求值将重用缓存中的结果。...对查询集进行切片后返回一个新的查询集,不会立即执行查询。
上一篇Django 2.1.7 模型 - 条件查询 F对象 Q对象 聚合查询讲述了关于Django模型的介绍F对象、Q对象、聚合查询等功能。...其中查询集具有缓存、返回多个值、返回单个值、对查询集切片处理等功能。...缓存:使用同一个查询集,第一次使用时会发生数据库的查询,然后把结果缓存下来,再次使用这个查询集时会使用缓存的数据。 查询集的缓存 每个查询集都包含一个缓存来最小化对数据库的访问。...在新建的查询集中,缓存为空,首次对查询集求值时,会发生数据库查询,django会将查询的结果存在查询集的缓存中,并返回请求的结果,接下来对查询集求值将重用缓存中的结果。...” 对查询集进行切片后返回一个新的查询集,不会立即执行查询。
本文从Django官方文档总结而来,将聚合的主要用法和查询集的常见方法做一归纳。 聚合 1....(括号里面有参数),后两者是不返回查询集的方法 。...2.django提供了两种生成聚合的方法 1)从整个查询集生成统计值,主要用法:aggregate(*args, **kwargs) aggregate()是QuerySet 的一个终止子句,也就是说...(QuerySet)API 查询 本质上,可以创建、过滤、切片和传递查询集而不用真实操作数据库。...在你对查询集做求值之前,不会发生任何实际的数据库操作。
Django Form类定义中有一个 ModelChoiceField 对应的是Model 的外键,queryset 是返回一个查询集对象 例如,我有一个Form class BookForm(forms.Form
当你处理 一个object或者queryset时,Django能够使用你定义对象显示用的自述名(verbose name,或者复数的自述名,对于对象列表)来填充上下文(context)。...在一个通用视图上的context_object_name属性指定了要使用的定了上下文变量: # views.py from django.views.generic import ListView from...然而,通过使用queryset来定义一个过滤的对象列表,你可以更加详细 的了解哪些对象将会被显示的视图中(参见执行查询来获取更多关于查询集对象的更对信息,以及参见 基于类的视图参考来获取全部 细节)。...(publisher__name='Acme Publishing') template_name = 'books/acme_list.html' 注意,除了经过过滤之后的查询集,一起定义的还有我们自定义的模板名称...Return the object return object 注意 这里URLconf使用参数组的名字pk - 这个名字是DetailView用来查找主键的值的默认名称,其中主键用于过滤查询集
后面会详细讲解Django每一部分的使用方式和API了 本节内容 内置视图处理对象的定义 内置视图处理对象的使用 源代码分析 1....常规情况下,对应页面中要展示数据列表的视图,通过继承Django的django.views.generic.ListView对象来实现,页面中要展示数据信息的视图,通过继承Django的django.views.generic.DetailView...import Question # 封装:定义展示应用首页的处理类 class IndexView(generic.ListView): # 模板路径 template_name =...内置类,通过template_name指定了HTML视图,通过context_object_name指定了保存数据的变量,在get_queryset()函数中定义了数据的查询方式 问题详细信息页面和问题解决方案的结果展示页面...这个问题就对了,我们看看Django源代码 首先查看ListView class ListView(MultipleObjectTemplateResponseMixin, BaseListView):
执行这个视图的时候,self.object_list将包含视图正在操作的对象列表(通常是一个查询集,但不是必须)....指定一个经过过滤的对象列表,将取代model提供的值 context_object_name: 指定要在上下文中使用的变量的名称 方法: get_queryset():获取此视图的对象列表.必须是可迭代或者可以使查询集...属性: model: 视图要显示的模型 queryset: 表示对象的一个查询集.queryset的值优先于model的值. template_name: 字符串表示的模板名称. context_object_name...from django.views.generic import TemplateView,ListView from django.utils import timezone from django.views.generic.detail...根据报错的提示,我们可以直接在视图下给success_url参数赋值,或在模型中去定义get_absolute_url()方法,去设置成功后跳转的url。
1.ListView ? 表示对象列表的一个页面. 执行这个视图的时候,self.object_list将包含视图正在操作的对象列表(通常是一个查询集,但不是必须)....指定一个经过过滤的对象列表,将取代model提供的值 context_object_name: 指定要在上下文中使用的变量的名称 方法: get_queryset():获取此视图的对象列表.必须是可迭代或者可以使查询集...属性: model: 视图要显示的模型 queryset: 表示对象的一个查询集.queryset的值优先于model的值. template_name: 字符串表示的模板名称. context_object_name...,ListView from django.utils import timezone from django.views.generic.detail import DetailView from...根据报错的提示,我们可以直接在视图下给success_url参数赋值,或在模型中去定义get_absolute_url()方法,去设置成功后跳转的url。
基础视图 View TemplateView RedirectView 通用的显示视图 DetailView ListView 通用的编辑视图 FormView CreateView UpdateView...基于类的通用视图 —— 索引 Simple generic views View TemplateView RedirectView Detail Views DetailView List Views ListView...Django 的通用视图建立在基础视图之上,用于作为经常用到的功能的快捷方式,例如显示对象的详细信息。它们提炼视图开发中常见的风格和模式并将它们抽象,这样你可以快速编写常见的视图而不用重复你自己。...大部分通常视图需要queryset 键 ,它是一个查询集 实例;关于查询集对象的更多信息,请参见执行查询。 译者:Django 文档协作翻译小组,原文:API reference。...Django 文档协作翻译小组人手紧缺,有兴趣的朋友可以加入我们,完全公益性质。
解决方案 常规写法是,我们通过Django的ORM查询到所有的数据,然后展示出来,代码如下: def user_list(request): """返回UserProfile中所有的用户"""...针对这种常用场景,提供了一个更快速便捷的方式,那就是ListView,用法如下: from django.views.generic import ListView class UsersView(ListView...代码如下: from django.views.generic import ListView class UsersView(ListView): model = UserProfile...,代码如下: from django.views.generic import ListView class UsersView(ListView): model = UserProfile...场景四 我想要限制接口的请求方式,比如限制只能GET访问,代码如下: from django.views.generic import ListView class UsersView(ListView
对于这些场景,Django提供了几个class-based view来处理: ListView UpdateView CreateView DeleteView 这几个类视图分别对应着查询ListView...查询视图 ListView 对应官网文档 首先,从最简单的展示开始。...ListView可以通过你给出的model以及想要展示的model中的field,在对应的数据库中查询出对应的对象存放在List对象中,并传递给template渲染。...view from django.views.generic.edit import CreateView class SSHAuthListView(ListView): template_name...在web开发中约定俗成的规则是,对于查询类的请求用get,对于修改类的请求用post。Django在设计的时候也遵循了这个原则,所以以下的每个view中,都具有支持get和post的函数。
admin.site.register(模型类名) class 自定义配置类名(admin.ModelAdmin): list_display = ["字段名1","字段名...1"] admin.site.register(模型类名,自定义配置类名) 回到顶部 Django admin如何实现后台数据管理的?...回到顶部 如何仿照admin实现一个自定义的增删改查的组件? ? ?...需求是:在自定制配置类根据search_fields中的字段,进行模糊定位查询,若search_fields中有多个字段,则用或查询; 只有在自定制配置类配置的时候页面上才会有搜索标签...static/js/jquery-3.1.1.js"> 查询功能
: >>> page2.number 2 查看分页后的总页数: >>> p.num_pages 2 查看某一页是否还有上一页,以及查询该页上一页的页码: # 查询第二页是否还有上一页 >>> page2....has_previous() True # 查询第二页上一页的页码 >>> page2.previous_page_number() 1 查看某一页是否还有下一页,以及查询该页下一页的页码: # 查询第二页是否还有下一页...>>> page2.has_next() False # 查询第二页下一页的页码 >>> page2.next_page_number() django.core.paginator.EmptyPage...回顾在 基于类的通用视图:ListView 和 DetailView 中的内容,我们已将视图函数转换成了类视图。...ListView 传递了以下和分页有关的模板变量供我们在模板中使用: paginator ,即 Paginator 的实例。 page_obj ,当前请求页面分页对象。
Django 工具 from django.db.models.signals import post_save 保存 post_delete 删除 from django.dispatch import...urlresolvers.reverse 来反向解析名称) 一个绝对的或相对的URL,将原封不动的作为重定向的位置 get_object_or_404(klass, *args, **kwargs) class 类 参数(可被查询...generic generic.ListView generic.DetailView 快速生成 from rest_framework import routers, serializers, viewsets...Serializers定义了API的表现. class UserSerializer(serializers.HyperlinkedModelSerializer): class Meta: model...= User fields = ('url', 'username', 'email', 'is_staff') ViewSets 定义了 视图(view) 的行为. class UserViewSet
要求 修改数据库 Django shell 数据级联(一对多) 元信息 定义字段 模型过滤 创建对象4种方式 查询集 过滤器 获取单个对象 字段查询 时间 聚合函数 跨关系查询 F对象 Q对象...概念:查询集表示从数据库获取的对象集合,查询集可以有多个过滤器。.../缓存集 查询集的缓存:每个查询集都包含一个缓存,来最小化对数据库的访问 在新建的查询集中,缓存首次为空,第一次对查询集求值,会发生数据缓存,django会将查询出来的数据做 一个缓存,并返回查询结果...,以后的查询直接使用查询集的缓存。...·属性命名限制 ·遵循标识符规则 ·由于django的查询方式,不允许使用连续的下划线 库 ·定义属性时,需要字段类型,字段类型被定义在 django.db.models.fields
.has_previous() True # 查询第二页上一页的页码 >>> page2.previous_page_number() 1 查看某一页是否还有下一页,以及查询该页下一页的页码: # 查询第二页是否还有下一页...而类视图 ListView 已经帮我们写好了上述的分页逻辑,我们只需通过指定 paginate_by 属性来开启分页功能即可,即在类视图中指定 paginate_by 属性的值: blog/views.py...ListView 传递了以下和分页有关的模板变量供我们在模板中使用: paginator ,即 Paginator 的实例。 page_obj ,当前请求页面分页对象。...另外还要注意一点,请求哪一个页面通过 page 查询参数传递给 django 视图,django 会根据 page 的值返回对应页面的文章列表,所以上一页和下一页超链接的 href 属性指向的 url...带上了 page 查询参数。
import ListView from blog.models import BlogPost path(r'bloglist/',ListView.as_view(template_name='...bloglist.html:默认list名为object_list {% for dr in object_list %} {{dr.title}} {% endfor %} 5、重写 //ListView...from django.views.generic import ListView class IndexView(ListView): template_name = "blog/index.html...">{% csrf_token %} {{ form.as_p }} 8、扩展CreateView:自定义...使用FormView一般需要定义template_name, form_class和success_url. views.py - Use FormView from myapp.forms import
定义模型类 在模型中定义属性,会生成数据库表中的字段 django根据属性的类型确定以下信息: 当前选择的数据库支持字段的类型 渲染管理表单时使用的默认html控件 在管理站点最低限度的验证 django...定义模型属性 定义属性时,需要字段类型 字段类型被定义在django.db.models.fields目录下,为了方便使用,被导入到django.db.models中 使用方式 导入from django.db...Django的模型进行数据库的查询操作的接口,Django应用的每个模型都拥有至少一个管理器 自定义管理器类主要用于两种情况 向管理器类中添加额外的方法创建管理器对象保存数据到数据库 class TestInfoManager...模型类的查询 查询集表示从数据库中获取的对象集合 查询集可以含有零个、一个或多个过滤器 过滤器基于所给的参数限制查询的结果 从Sql的角度,查询集和select语句等价,过滤器像where和limit子句...接下来主要讨论如下知识点 查询集 字段查询:比较运算符,F对象,Q对象(1)模型类查询集合 在管理器上调用过滤器方法会返回查询集 查询集经过过滤器筛选后返回新的查询集,因此可以写成链式过滤 惰性执行:
Django源码学习-8-ListView&DetailView通用视图 ?...Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。...from django.views.generic import ListView ListView 通过重写queryset, template_name和context_object_name来完成...ListView的自定义,还可以通过重写get_context_data方法传递额外的参数或内容。...import ListView class PublisherBookList(ListView): template_name = 'books/books_by_publisher.html
上一节的注册中,使用了 form 表单,在 标签中,定义了 method 属性告诉浏览器想如何与服务器通信。...HTTP 规范定义了几种 request methods 请求方法,需要使用 GET 和 POST。...Django 使用 CSRF Token 保护所有的 POST 请求,这是避免外部站点或者应用程序向服务器的应用程序提交数据的安全措施。...基于类的通用视图 from django.views.generic import UpdateView, ListView ① 主页 class BoardListView(ListView):...Board context_object_name = 'boards' template_name = 'board/home.html' ② 话题 class TopicListView(ListView
领取专属 10元无门槛券
手把手带您无忧上云