常规情况下,对应页面中要展示数据列表的视图,通过继承Django的django.views.generic.ListView对象来实现,页面中要展示数据信息的视图,通过继承Django的django.views.generic.DetailView...class DetailView(generic.DetailView): # 指定要展示的数据类型 model = Question # 指定展示的模板页面 template_name...template_name = "results.html" # 定义投票结果 def vote(request, question_id): # 获取查询的问题对象 question...我们可以从上述代码中看到,继承自ListView视图处理类的类型,已经在内部封装好了分页操作功能,这也是我们项目中经常用到的技术呢,非常棒吧,我们继承了这个视图处理对象,就可以在后续的项目中,通过重写它的属性和方法来快捷的完成数据展示的分页功能了...从基础文件view.py中,我们可以看到,各种视图模板的基础处理操作和视图类型的封装都有了简洁的定义,我们需要做的就是在项目中,继承这些Django已经封装好的对象,快捷的完成项目的开发。
此外,有问题的模型可以作为一个额外的参数传递到URLconf中。 Django通过通用视图来完成下面一些功能: 为单一的对象展示列表和一个详细页面。...允许用户创建,更新和删除对象 – 以授权或者无需授权的方式。 总的来说,这些视图提供了一些简单的接口来完成开发者遇到的大多数的常见任务。...因为这是如此常见 的任务,Django提供了一大把内置的通用视图,使生成对象的展示列表和详细视图 的变得极其容易。 让我们来看一下这些通用视图中的”对象列表”视图。...然而,通过使用queryset来定义一个过滤的对象列表,你可以更加详细 的了解哪些对象将会被显示的视图中(参见执行查询来获取更多关于查询集对象的更对信息,以及参见 基于类的视图参考来获取全部 细节)。...– 因此我们简单的 重写它并封装调用: from django.views.generic import DetailView from django.utils import timezone from
,可以让你 通过关键字名称来获取提交的数据。...在本例中, request.POST[‘choice’] 返回了所选择的投票项目的 ID ,以字符串的形式。 request.POST 的值永远是字符串形式的。...请注意 Django 也同样的提供了通过 request.GET 获取 GET 数据的方法 – 但是在代码中我们明确的使用了 request.POST 方法,以确保数据是通过 POST 方法来修改的。... 现在,在浏览器中访问 /polls/1/ 并完成投票。每次投票后你将会看到结果页数据都有更新。 如果你没有选择投票选项就提交了,将会看到错误的信息。...在 DetailView 中 poll 变量是自动提供的 – 因为我们使用了一个 Django 模型 (Poll) ,Django 能够为上下文变量确定适合的名称。
这些视图反映基本的 Web 开发中的一个常见情况:根据 URL 中的参数从数据库中获取数据、载入模板文件然后返回渲染后的模板。...由于这种情况特别常见,Django 提供一种快捷方式,叫做“通用视图”系统。 通用视图将常见的模式抽象化,可以使你在编写应用时甚至不需要编写Python代码。...让我们将我们的投票应用转换成使用通用视图系统,仅仅需要做以下几步来完成转换: 1.转换 URLconf。 2.删除一些旧的、不再需要的视图。 3.基于 Django 的通用视图引入新的视图。...return Question.objects.order_by('-pub_date')[:5] class DetailView(generic.DetailView): model =...小结 这节终于用上了通用视图,再一次感受到了Django框架,把冗余的东西都做了简化抽象。 定义了通用视图,传递给它指定模版,以及模型,一切就OK了。它比 render 快捷函数更加简洁。 ----
将 archives 视图函数改写成类视图 这里没有什么新东西要讲了,学以致用,这个任务就交给你自己了。...DetailView 除了从数据库中获取模型列表的数据外,从数据库获取模型的一条记录数据也是常见的需求。比如查看某篇文章的详情,就是从数据库中获取这篇文章的记录然后渲染模板。...对于这种类型的需求,Django 提供了一个 DetailView 类视图。..., DetailView # 记得在顶部导入 DetailView class PostDetailView(DetailView): # 这些属性的含义和 ListView 是一样的...post 传递给模板外(DetailView 已经帮我们完成), # 还要把评论表单、post 下的评论列表传递给模板。
开发环境 django 1.11 DetailView 的相关源码 # .....pk='pk') 重写 generic.DetailView 里面的 get_object class DetailView(generic.DetailView): model = Article...获取对应文章的信息 """ # 文章详情增加缓存 pk = self.kwargs.get(self.pk_url_kwarg) # 获取主键...obj = cache.get("article_obj_%s" % pk) # 获取该主键的缓存 if not obj: # 如果没有就 obj = super...(DetailView, self).get_object() # get_object() 重新获取单个对象 cache.set("article_obj_%s" % pk,
"/login/" TemplateView 显示Django HTML template 一般网站中使用模板显示的页 ListView 显示对象列表 文章列表页 DetailView 显示对象详情 文章详细页...import DetailView from django.views.generic.edit import CreateView, UpdateView, DeleteView from django.core.urlresolvers...): model = employee #将 model 指定为Publisher,告诉 Django 我要获取的模型是 Publisher。...这种方式一般用于form需要更加精准的样式的时候,逐个元素逐个元素的编排到html中。 完成后可在页面上新增或修改项目信息。...不过点击Update后会有一个报错:191989-055d8b7a362f2603.png 意思是新增后修改完成后我们没有定义一个redirect的url去跳转。
get_context_data(**kwargs): 返回显示对象的上下文数据,通过覆盖该方法返回额外的上下文 2.DetailView ?...,ListView from django.utils import timezone from django.views.generic.detail import DetailView from...): model = employee #将 model 指定为Publisher,告诉 Django 我要获取的模型是 Publisher。...这种方式一般用于form需要更加精准的样式的时候,逐个元素逐个元素的编排到html中。 完成后可在页面上新增或修改项目信息。...不过点击Update后会有一个报错: 191989-055d8b7a362f2603.png 意思是新增后修改完成后我们没有定义一个redirect的url去跳转。
今天我们会以博客的例子,教你如何利用Django开发网页计数器,统计并显示一篇文章的浏览次数。本文的原理可以适用于很多场景,比如统计某一文件的下载次数,统计某一用户在单位时间内的登录次数。...第一步 建立APP,设置URL 我们创建一个叫demo的项目,并利用python manage.py startapp blog创建一个名叫blog的APP,并把它加入到settings.py中INSTALLED_APP...# blog/views.py from django.views.generic import DetailView from .models import Article class ArticleDetailView...ArticleDetailView通过URL传递过来的参数(id=6)获取当前文章对象,并通过模板blog/article_detail.html显示。...每次通过get_object方法获取文章对象后, 还调用该对象的viewed的方法,使计数增加1。 用户每次重新访问/blog/article/6/或刷新浏览器,计数器都会增加1。
博客主页:http://www.cae-space.cn/ ❈ 在Django项目中使用MongoDB作为后端数据库,且不改变Django的ORM框架。...) 4.完成。...操作 参考集成Django和MongoDB获取更详细的介绍。...如果你的项目使用了复杂的数据库,也可以向专家获取支持。 使用Django用户管理模块添加数据文件 比如你想利用Django创建一个以MongoDB为后端数据库的博客平台。...'name': 'Beatles'}) 参考在Django中使用MongoDB数据字段获取更多的介绍。
注: views()视图的代码确实有一个小问题。它首先从数据库中获取selected_choice对象,计算新的投票数值然后将其保写回数据库。...仅仅需要做以下几步来完成转换: 修改URLconf; 删除一些旧的无用的视图; 采用基于通用视图的新视图。...这里使用两个通用视图:ListView和DetailView。这两个视图分别代表“显示对象列表”和“显示特定类型对象的详细信息页面”的抽象概念。 每个通用视图需要知道它将作用于哪个模型。...默认情况下,DetailView泛型视图使用一个称作/_detail.html的模板。...而对于DetailView,question变量会被自动提供,因为我们使用了Django的模型(Question),Django会智能的选择合适的上下文变量。
网站演示: https://bt.mypython.me 源码地址: https://github.com/geeeeeeeek/bt 项目开发过程 项目简介 该项目是基于python的web类库django...本人的研究方向是一项关于搜索的研究项目。在该项目中,笔者开发了一个简单版的搜索网站,实现了对数据库数据的检索和更新。...网站域名为bt.mypython.me 启动项目 django-admin startproject bt 创建应用 python3 manage.py startapp app model设计 主要是对提交的链接进行设计...,在此项目中,我们需要展示链接的名称、url、联系人、链接简介等字段。...详情页 我们再来开发详情页,从urls.py中看到,详情页是由DetailView来实现的,我们来窥探它的全貌: class DetailView(generic.DetailView): model
作者:Kuky_xs 博客:https://www.jianshu.com/p/8cdf099e974f 1 正文 《django入门:环境及项目搭建》 《django入门:数据模型》 《django入门...:视图及模版》 《django入门:Admin管理系统及表单》 终于到最后一部分了,这部分我们将通过 django 自带的通用视图类替换之前写的视图函数,对视图进行重构 2 利用 django 通用视图类创建类视图..., DetailView from django.shortcuts import get_object_or_404 from blog.models import Post # 获取相应模型下的全部数据...带分页列表 目前的分页效果看上去并不那么美观,在实际项目中,我们优化了分页的显示,具体的代码就不贴了(我怕代码太多你们会打我),可以下载项目查看,这边我们可以看下效果图 ?...p.page(2) print(page2.number) # 获取当前页的页码 print(page2.object_list) # 获取该页码下的所有列表 ['c', 'd'] print(page2
项目简介 该项目是基于python的web类库django开发的一套web网站,做为一个公益项目。...预览地址 https://i.mypython.me/ 源码地址 https://github.com/geeeeeeeek/mask 启动项目 django-admin startproject mask..., 开始编写IndexView的代码。...来实现的,我们来窥探它的全貌: class DetailView(generic.DetailView): model = Product template_name = 'app/detail.html...提交页 最后再来看一下提交页,它是由CommitView来实现的。
项目简介该项目是基于python的web类库django开发的一套web网站,二手商品交易平台,给师弟开发的课程作业。大家在学习过程中,遇到问题可以github咨询作者。...预览展示http://mask.gitapp.cn源码地址https://github.com/geeeeeeeek/mask开发步骤:启动项目django-admin startproject mask...开始编写IndexView的代码。...来实现的,我们来窥探它的全貌:class DetailView(generic.DetailView): model = Product template_name = 'app/detail.html...运行项目python3 manage.py runserver
将 index 视图函数改写为类视图 针对这种从数据库中获取某个模型列表数据(比如这里的 Post 列表)的视图,Django 专门提供了一个 ListView 类视图。...将 archive 和 tag 视图函数改写成类视图 这里没有什么新东西要讲了,学以致用,这个任务就交给你自己了。...DetailView 除了从数据库中获取模型列表的数据外,从数据库获取模型的一条记录数据也是常见的需求。比如查看某篇文章的详情,就是从数据库中获取这篇文章的记录然后渲染模板。...对于这种类型的需求,django 提供了一个 DetailView 类视图。..., DetailView # 记得在顶部导入 DetailView class PostDetailView(DetailView): # 这些属性的含义和 ListView 是一样的
作者&好友:Laoqi 1、请求与响应 1.1 Request(请求) drf 传入视图的request 不再是Django默认的HttpRequest对象,而是drf 提供的拓展了HttpRequest...2.1 两个视图基类 2.1.1 APIView APIView是drf 提供的所有视图的基类,继承自Django的View父类。...在试图中可以调用该方法获取详情信息的模型类对象。**若详情访问的模型类对象不存在,会返回404。...GenericViewSet就帮助我们完成了这样的继承工作,继承自GenericAPIView与ViewSetMixin,在实现了调用as_view()时传入字典(如{'get':'list'})的映射处理工作的同时...3.2 action 在视图集中,我们可以通过action对象属性来获取当前请求视图集时的action动作是哪个。除了默认的方法动作外,还可以添加自定义动作。
完成了项目的模型层,最需要思考的是数据库该如何设计?这次的电商项目,从用户到下单,都会有哪些操作呢?当看到页面的那些商品信息或是活动促销信息,有考虑过它们之间的联系么?...完成了前一小节的主页,需要对商品详情页单独写一个视图类。会发现,在主页的视图和商品详情页视图中,都会先从缓存中去查询有无数据。...一、商品详情页 from django_redis import get_redis_connection django_redis 在 settings.py 文件中配置 # 缓存 CACHES =...", } } } class DetailView(BaseCartView): """商品详细信息页面""" def get(self, request, sku_id...new_skus = GoodsSKU.objects.filter(category=sku.category).order_by("-create_time")[:2] # 获取其他规格的商品
---- FutureTask提供的主要功能 ---- 1、(超时)获取异步任务完成后的执行结果; 2、判断异步任务是否执行完成; 3、能够取消异步执行中的任务; 4、能够重复执行任务; 源码分析...当任务还未执行完毕时候,我们获取任务结果时,会阻塞: java.util.concurrent.FutureTask#get() java.util.concurrent.FutureTask#get...FutureTask有哪些坑 ---- 1、不调用get方法获取结果,可能永远也不知道异常信息 任务中发生的异常会保存在FutureTask中,忽略获取结果,我们可能永远丢失异常信息。...2、不用带超时的get方法获取结果,可能永远会被阻塞 在线程池中,使用 java.util.concurrent.ThreadPoolExecutor.DiscardPolicy 中的默认实现,会使的...并且获取结果时候,不带超时的get方法可能导致异常信息丢失,或者一直被阻塞的情况。 ----
我们可以把这些操作逻辑写在一个直观的 Python 函数里,但是 Django 开发者们意识到很多视图函数中的逻辑代码都是重复和通用的,因此在较早的版本中,Django 便开始引入 Class-based...因此,本系列教程将从源码层面解析 Django 类视图的工作原理和设计理念,一旦掌握这些,以后在项目中使用类视图就可以更加得心应手和运用自如。...detail.py 主要存放用于从数据库获取单条记录的类视图,例如从数据库中获取某一篇博客文章。 edit.py 主要包含了表单处理,创建、更新和删除数据库中的单条记录的类视图。...list.py 主要包含了从数据库中获取多条记录的类视图,例如从数据库中获取全部博客文章列表。 当然这仅仅是一个粗略的概述,后续的系列教程中将详细讲解各个模块中的具体类的作用。...例如 ContextMixin 及其子类负责获取渲染模板所需的模板变量;MultipleObjectMixin 负责从数据库获取模型对应的多条数据;View 负责处理 HTTP 请求(如 get 请求,
领取专属 10元无门槛券
手把手带您无忧上云