常规情况下,对应页面中要展示数据列表的视图,通过继承Django的django.views.generic.ListView对象来实现,页面中要展示数据信息的视图,通过继承Django的django.views.generic.DetailView...,继承了generic.ListView内置类,通过template_name指定了HTML视图,通过context_object_name指定了保存数据的变量,在get_queryset()函数中定义了数据的查询方式...问题详细信息页面和问题解决方案的结果展示页面,继承了generic.DetailView内置类,通过model指定了展示的数据的类型,template_name指定了HTML视图的名称 vote...DetailView和ResultView中的要查询的数据,同样也是通过主键编号进行查询的,默认的变量名称是pk,所以在路由中要进行如下的修改配置,才可以正常使用 改造polls/urls.py路由模块...源码分析 此时,会有个问题困扰着我们,为什么要继承视图处理类,为什么要继承不同的处理类ListView和DetailView?
继上篇 django2.0入门教程第三节,介绍了django2.0的视图views和模板template, 本节介绍如何在前台进行投票。...构建一个简单的表单提交页 polls/templates/polls/detail.html {{ question.question_text }} {% if error_message...将问题的相关选项遍历,以单选框显示 form表单用post方式提交数据 配置url polls/urls.py path('/vote/', views.vote, name...result.png 优化url和view写法 另一种写法: 将主键id代替question_id polls/urls.py #_*_coding:utf8_*_ from django.urls...generic from .models import Question, Choice class IndexView(generic.ListView): template_name
本人的研究方向是一项关于搜索的研究项目。在该项目中,笔者开发了一个简单版的搜索网站,实现了对数据库数据的检索和更新。...class SearchView(generic.ListView): model = Link template\_name = 'app/search.html' context...详情页 我们再来开发详情页,从urls.py中看到,详情页是由DetailView来实现的,我们来窥探它的全貌: class DetailView(generic.DetailView): model...通用模板类来显示详情。...链接提交页 最后再来看一下链接提交页,它是由CommitView来实现的。
项目简介该项目是基于python的web类库django开发的一套web网站,二手商品交易平台,给师弟开发的课程作业。大家在学习过程中,遇到问题可以github咨询作者。...它的代码非常简单:class IndexView(generic.ListView): model = Product template_name = 'app/index.html'...,从urls.py中看到,详情页是由DetailView来实现的,我们来窥探它的全貌:class DetailView(generic.DetailView): model = Product..., self).get_context_data(**kwargs) return context它很简单,继承了DetailView通用模板类来显示详情。...提交页最后再来看一下提交页,它是由CommitView来实现的。
项目简介 该项目是基于python的web类库django开发的一套web网站,做为一个公益项目。...它的代码非常简单: class IndexView(generic.ListView): model = Product template_name = 'app/index.html'...我们再来开发详情页,从urls.py中看到,详情页是由DetailView来实现的,我们来窥探它的全貌: class DetailView(generic.DetailView): model..., self).get_context_data(**kwargs) return context 它很简单,继承了DetailView通用模板类来显示详情。...提交页 最后再来看一下提交页,它是由CommitView来实现的。
上面的try ... except就是用来检查KeyError,如果没有给出choice将重新显示Question表单和错误信息; 在将Choice得票数加1之后,返回一个HttpResponseRedirect...这个函数可以避免在视图函数中硬编码URL。它需要我们给出想要跳转的视图的名字和该视图所对应的URL模式中需要给该视图提供的参数。...reverse from django.views import generic from .models import Choice, Question class IndexView(generic.ListView...这里使用两个通用视图:ListView和DetailView。这两个视图分别代表“显示对象列表”和“显示特定类型对象的详细信息页面”的抽象概念。 每个通用视图需要知道它将作用于哪个模型。...而对于DetailView,question变量会被自动提供,因为我们使用了Django的模型(Question),Django会智能的选择合适的上下文变量。
Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。...Django的通用视图可以减少开发的单调性,它抽象出一些在视图开发中常用的代码和模式,这样就可以在无需编写大量代码的情况下,快速编写出常用的视图函数。 ?...pass ① ListView:显示对象列表 用于展示一个 Model 里面的所有对象,也可以是其子集 (queryset) ,支持分页。...from django.views.generic import ListView from books.models import Publisher class PublisherList(ListView...② DetailView:显示一个对象的某个属性详细信息 用于显示某一 Model 中的一个 object 的详细信息。
文章目录 前言 1 编写一个简单的表单 1.1 模版中新增表单 1.2 视图中新增交互处理 1.3 重定向的 results 页面增加显示 1.4 完善 results.html 页面代码 2 通用视图...return HttpResponseRedirect(reverse('polls:results', args=(question.id,))) 1.3 重定向的 results 页面增加显示 还是在视图中处理... 2 通用视图 投票应用中的 detail 和 results 视图的操作都差不多,显得冗余。...让我们将我们的投票应用转换成使用通用视图系统,仅仅需要做以下几步来完成转换: 1.转换 URLconf。 2.删除一些旧的、不再需要的视图。 3.基于 Django 的通用视图引入新的视图。...(generic.ListView): template_name = 'polls/index.html' context_object_name = 'latest_question_list
编写你的第一个 Django 程序 第4部分 本教程上接 教程 第3部分 。我们将 继续开发 Web-poll 应用并且关注在处理简单的窗体和优化我们的代码。...想了解 HttpRequest 对象更多的内容,请参阅 request 和 response 文档 。 当有人投票后,vote() 视图会重定向到投票结果页。...P\d+)/vote/$', 'polls.views.vote', name='vote'), ) 修改 views 在这我们将使用两个通用视图: ListView 和 DetailView...这两个视图分别用于显示两种抽象概念 “显示一系列对象的列表” 和 “显示一个特定类型的对象的详细信息页”。 每个视图都需要知道使用哪个模型数据。因此需要提供将要使用的 model 参数。...在 DetailView 中 poll 变量是自动提供的 – 因为我们使用了一个 Django 模型 (Poll) ,Django 能够为上下文变量确定适合的名称。
, DetailView from django.shortcuts import get_object_or_404 from blog.models import Post # 获取相应模型下的全部数据...详情界面 有时候如果我们的数据过多,同一页加载全部数据,用户的体验肯定不好,我们通过通用视图类来创建分页,这边为了方便显示,我们会设置每页加载一篇文章 3 通过 ListView 创建分页 1.指定...带分页列表 目前的分页效果看上去并不那么美观,在实际项目中,我们优化了分页的显示,具体的代码就不贴了(我怕代码太多你们会打我),可以下载项目查看,这边我们可以看下效果图 ?...优化分页列表 最后我们列下 Paginator 常用属性结束 django 的入门教程,接下来会有 DRF 的入门教程,django 算是其基础吧,DRF 实现了前后端分离,刚好适合我这种 Android...当前页第一个 item 在列表中的位置 3 print(page2.end_index()) # 当前页最后一个 item 在列表中的位置 4 最后附上整个项目的地址:blog_project
Django尝试从model和 template层移除一些单调的情况,但是Web开发者依然会在view(视图)层经历这种厌烦。 Django的通用视图被开发用来消除这一痛苦。...这是通用视图在1.3发布中被重新设计的原因之一 - 之前,它们仅仅是一些函数视图加上 一列令人疑惑的选项;现在,比起传递大量的配置到URLconf中,更推荐的扩展通用视图的 方法是子类化它们,并且重写它们的属性或者方法...当你处理 一个object或者queryset时,Django能够使用你定义对象显示用的自述名(verbose name,或者复数的自述名,对于对象列表)来填充上下文(context)。...在一个通用视图上的context_object_name属性指定了要使用的定了上下文变量: # views.py from django.views.generic import ListView from...首先,我们需要添加作者详情页的代码配置到URLconf中,指向自定义的视图: from django.conf.urls import url from books.views import AuthorDetailView
"/login/" TemplateView 显示Django HTML template 一般网站中使用模板显示的页 ListView 显示对象列表 文章列表页 DetailView 显示对象详情 文章详细页...Generic date views 显示一段时间内的对象 按时间归类的博客 1.ListView ?...显示确认页面并删除现有对象的视图.仅当请求方法为POST时,才会删除给定的内容.如果此视图是通过GET提取的,它将显示一个确认页面,其中包含POST到同一网址的表单....----- 我们有了Project和Schedule列表显示后,现在需要添加新增和修改的操作。...一般在form验证出错的时候显示)。
基础视图 View TemplateView RedirectView 通用的显示视图 DetailView ListView 通用的编辑视图 FormView CreateView UpdateView...—— 索引 Simple generic views View TemplateView RedirectView Detail Views DetailView List Views ListView...这表示不应该使用列表、字典或其它可变对象作为视图的参数。如果你真这么做而且对共享的对象做过修改,某个用户的行为可能对后面访问同一个视图的用户产生影响。...它们不能满足项目中所有的需求,在这种情况下有Mixin 可以扩展基础视图的功能。 Django 的通用视图建立在基础视图之上,用于作为经常用到的功能的快捷方式,例如显示对象的详细信息。...它们提炼视图开发中常见的风格和模式并将它们抽象,这样你可以快速编写常见的视图而不用重复你自己。
上回说到,虽然已经基本上把显示的格式改的差不多了,但是界面还是不够美观,同时也没有实现分类页面和检索文章页面,今天我们先来实现分类页面和检索文章的页面。 ?...分类页面的实现 考虑到分类页面是一个用来展示属于当前类别的所有文章,和首页一样的格式,就是显示的列表项十有八九会比首页少,因此分类页面的视图直接继承首页的视图,然后重写 get_queryset 方法就完事了...,接下来我就给出视图、模板和 URL 的完整代码,首先是视图 personal_website\views.py,代码如下: from django.db.models import Q from django.views.generic...import DetailView, ListView from.models import Article, Category # Create your views here. class IndexView...看到 URL 最后是 5 就说明没有问题,同时也可以去管理后台看显示的这两篇文章是不是有类别5 这个分类。
在本讲中,我们开始首页功能的开发,在开发过程中,大家将会学习到Django中的通用视图类、分页对象paginator以及foreignKey外键的使用。 效果演示 [16851ab0d057a5d6?...显示列表数据非常简单,我们使用django中内置的视图模版类ListView来显示,首先在view.py中编写IndexView类,用它来显示列表数据。...这里我们使用到了django中的内置标签,比如for语句、empty语句。这些都是django中非常常用的语句。在之后的教程中我们会经常遇到。...显示结果如下 [首页展示] 分类功能 在写分类功能之前,我们先学习一个回调函数 get_context_data() 这是ListView视图类中的一个函数,在 get_context_data() 函数中...,可参考 这里 分页功能 在Django中,有现成的分页解决方案,我们开发者省了不少事情。
body = models.TextField() 再来回顾一下文章详情页的视图,我们在 PostDetailView 中将 post 的 body 字段中的 Markdown 文本渲染成了 HTML...注意这里我们使用的是类视图,类视图的内容具体请参考 基于类的通用视图:ListView 和 DetailView。...blog/views.py class PostDetailView(DetailView): # 这些属性的含义和 ListView 是一样的 model = Post template_name...接下来就在博客文章详情页的文章目录侧边栏渲染文章的目录吧!...markdown.extensions.toc import TocExtension class PostDetailView(DetailView): # 这些属性的含义和 ListView
首先我们需要定义几个概念: 总页码数,比如总共有30页 当前页码数,比如当前是第3页 显示的页码列表,也可以说是列表长度,比如显示1-10或者3-12,都是显示10个长度 我们分析一下百度的分页在不同场景对应的处理...,则从要把当前页放到中间 当前页接近末页的时候,重新调整开始页的策略,保证显示长度依然是固定 经过分页,在忽略页面效果的前提下,我们要实现一个分页效果最关键点就是得到一个要显示的页码列表。...Django设计分页 在Django里面可以定义一个标签函数来做分页,这个标签函数的主要目的就是输出要显示的页码列表,然后定义一个分页模板来渲染html页面即可。...定义标签函数 只要是视图继承generic.ListView,我定义的这个分页标签函数都是可以直接使用的,如果是自己定义的分页器,只需要修改标签函数的参数,拿到分页总数和当前页码也可以通用。..._replace(query=updated_query_string)) return updated_url 使用分页模板 在任何有分页对象的页面(也就是视图继承自generic.ListView
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方法传递额外的参数或内容。...:默认为 '_list' allow_empty 默认为 True (False 表示 object_list 为 空时,显示 404) get_context_data() 可以添加额外的模板 context
上回说到,因为文章内容的数据类型是文本字段,文本字段只能输入字符,图片就不行了,当时我给出了两种方案——markdown 和富文本编辑器,我决定选择富文本编辑器,因为 Django 的富文本编辑器插件有很多...django-ckeditor 的使用 使用 django-ckeditor 非常简单,因为我这里安装的是 django-ckeditor-5,和 django-ckeditor 差不多,但是也还是有一些区别的...,修改 IndexView 的 paginate_by 值,每一页显示的内容变少自然就会分页了,我把这个值直接改成了 1,一页只显示一条数据,下面来看一下效果,如图所示。...render from django.views.generic import DetailView, ListView from.models import Article # Create your...显示的确实是正常的,就是代码没有高亮显示,往下滑还会发现图片和表格没有居中显示,基本上算是正常了,就差样式了,至于如何修改样式我们明天再说。
采用了MVC的框架模式,即模型M,视图V和控制器C。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。并于2005年7月在BSD许可证下发布。...但是在Django中,控制器接受用户输入的部分由框架自行处理,所以Django 里更关注的是模型(Model)、模板(Template)和视图(Views),称为MTV模式。...ORM,即Object-Relational Mapping(对象关系映射),它的作用是在关系型数据库和业务实体对象之间作一个映射,这样,我们在具体的操作业务对象的时候,就不需要再去和复杂的SQL语句打交道...的视图 Django有很多的优秀的视图: View DetailView ListView FormView CreateView DeleteView UpdateView 我们的blog里面暂时只用到了...ListView和DetailView 4.2 使用dajngo自带的ListView v 编写app的views.py 4.3 使用django自带的DetailView 4.4 配置app的urls.py
领取专属 10元无门槛券
手把手带您无忧上云