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

基于类通用视图:ListView 和 DetailView

开发网站过程中,有一些视图函数虽然处理对象不同,但是其大致代码逻辑是一样。比如一个博客和一个论坛,通常其首页都是展示一系列文章列表或者帖子列表。...对处理首页视图函数来说,虽然其处理对象一个是文章,另一个是帖子,但是其处理过程是非常类似的。首先是从数据库取出文章或者帖子列表,然后将这些数据传递给模板并渲染模板。...将 index 视图函数改写为类视图 针对这种从数据库中获取某个模型列表数据(比如这里 Post 列表视图,Django 专门提供了一个 ListView 类视图。...不过注意一点是,类视图中,从 URL 捕获命名组参数值保存在实例 kwargs 属性(是一个字典)里,非命名组参数值保存在实例 args 属性(是一个列表)里。...这部分对应着 detail 视图函数中生成评论表单、获取 post 下评论列表代码部分。这个方法返回值是一个字典,这个字典就是模板变量字典,最终会被传递给模板

2.6K70

Django 教程 --- Django视图

根据Django文档,视图函数是一个Python函数,它接受Web请求并返回Web响应。此响应可以是网页HTML内容,重定向,404错误,XML文档或图像(Web浏览器可以显示任何内容) ?...每个视图函数都将HttpRequest对象作为其第一个参数,通常将其命名为request 该视图返回一个HttpResponse对象,其中包含生成响应。...要检查如何使用DjangoMVT(模型,视图,模板)结构制作基本项目,请访问创建项目Django。 视图类型 Django视图分为两大类: 基于功能视图 基于类视图 ?...基于功能视图通常分为4种基本策略,即CRUD(创建,检索,更新,删除)。CRUD是用于开发任何框架基础。 基于功能视图示例– 让我们创建一个基于函数视图列表视图以显示模型实例。...让我们为其创建一个视图和模板

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

django 1.8 官方文档翻译: 3-4-2 内建显示视图

此外,有问题模型可以作为一个额外参数传递到URLconf中。 Django通过通用视图来完成下面一些功能: 为单一对象展示列表一个详细页面。...的确,大多数来自Django开发新手 问题如何能使得通用视图使用范围更广。...DetailView通用视图提供了一个publisher对象给context,但是我们如何模板中添加附加信息呢?...然而,model参数并不是唯一能够指明视图要基于哪个对象进行操作方法 – 你同样可以使用queryset参数来指定一个对象列表: from django.views.generic import DetailView...让这种方式能够工作关键点,在于当类视图被调用时,各种有用对象被存储self;同request()(self.request)一样,其中包含了从URLconf中获取到位置参数 (self.args

1.4K40

Django 1.10中文文档-第一个应用Part4-表单和通用视图

这个函数可以避免视图函数中硬编码URL。它需要我们给出想要跳转视图名字和该视图所对应URL模式中需要给该视图提供参数。...唯一不同模板名字。稍后再来优化这个问题。...如果您有兴趣,可以阅读使用F()避免竞争条件,以了解如何解决此问题; 使用通用视图:减少代码冗余 上面的detail、index和results视图代码非常相似,有点冗余,这是一个程序猿不能忍受...他们都具有类似的业务逻辑,实现类似的功能:通过从URL传递过来参数去数据库查询数据,加载一个模板,利用刚才数据渲染模板,返回这个模板。...这里使用两个通用视图:ListView和DetailView。这两个视图分别代表“显示对象列表”和“显示特定类型对象详细信息页面”抽象概念。 每个通用视图需要知道它将作用于哪个模型。

2.3K40

Django 官方推荐姿势:类视图

对处理首页视图函数来说,虽然其处理对象一个是文章,另一个是帖子,但是其处理过程是非常类似的:首先是从数据库取出文章或者帖子列表,然后将这些数据传递给模板并渲染模板。...这些视图函数都是从数据库中获取文章(Post)列表,唯一区别就是获取文章列表可能不同。比如 index 获取全部文章列表,category 获取某个分类下文章列表。...将 index 视图函数改写为类视图 针对这种从数据库中获取某个模型列表数据(比如这里 Post 列表视图,Django 专门提供了一个 ListView 类视图。...比如 path('', views.index, name='index'),它一个参数是 URL 模式,第二个参数是视图函数 index。对 url 函数来说,第二个参数传入值必须是一个函数。...不过注意一点是,类视图中,从 URL 捕获路径参数值保存在实例 kwargs 属性(是一个字典)里,非路径参数值保存在实例 args 属性(是一个列表)里。

1.3K20

django 1.8 官方文档翻译: 1-2-4 编写你一个Django应用,第4部分

HttpResponseRedirect 对象需要一个参数:用户将被重定向 URL (请继续看下去在这情况下我们是如何构造 URL ) 。...这些视图代表了基本 Web 开发中一种常见问题: 根据 URL 中参数从数据库中获取数据,加载模板并返回渲染后内容。...template_name 参数是告诉 Django 使用指定模板名,而不是使用自动生成默认模板名。...我们也指定了 results 列表视图 template_name – 这确保了 results 视图和 detail 视图渲染时会有不同外观,虽然它们有一个 DetailView 隐藏在幕后。...同样,~django.views.generic.list.ListView 通用视图使用默认模板名为 /_list.html ;我们指定了 template_name 参数告诉

1.4K10

如何使用Python中Django模板

模板Django项目中构建用户界面的主要工具。让我们学习一下视图中如何使用模板,以及Django模板系统能够提供什么特性。 设置模板 我们需要一个地方放置模板。...Django社区,不同开发者对此有不同想法。一些开发者认为应该将所有模板都放在所在应用中。另一部分开发者将项目的所有模板放到一个单独目录。我就是这第二种开发者。...有时for循环中某个特定元素,你可能想采取一些特别的操作。模板中不能直接使用Python内建enumerate函数,但是for标签中有一个叫forloop特别变量可用。...这个url标签是模板中与reverse函数作用一样东西。像它reverse一样,url可以接受args或者kwargs参数,这些是期望用于路由其他变量。...构建你自己模板武器 当你需要构建你自己模板标签或者过滤器时,Django给你提供了制作它们工具。 这里有三个主要元素用来定制标签: Django期望地方定义你自己标签。

3.9K30

Django分页功能改造,一比一还原百度搜索分页效果

首先我们需要定义几个概念: 总页码数,比如总共有30页 当前页码数,比如当前是第3页 显示页码列表,也可以说是列表长度,比如显示1-10或者3-12,都是显示10个长度 我们分析一下百度分页不同场景对应处理...Django设计分页 Django里面可以定义一个标签函数来做分页,这个标签函数主要目的就是输出要显示页码列表,然后定义一个分页模板来渲染html页面即可。...该函数接受两个参数:context和max_length。context参数一个上下文对象,包含了模板渲染时环境变量和变量值。...分页模板 经过标签函数我们可以得到要显示页码列表,同时上下文也是直接继承,这时候可以定义一个分页模板。...总结 这篇博客主要介绍了作者如何Django网站中实现了一个类似百度搜索页面的分页效果,并提供了相关代码和思路。

30820

概述

我们可以把这些操作逻辑写在一个直观 Python 函数里,但是 Django 开发者们意识到很多视图函数中逻辑代码都是重复和通用,因此较早版本中,Django 便开始引入 Class-based...类视图比函数视图提供了更加高层抽象,它将上边提及数据库操作、表单处理、模板渲染等通用操作抽取为类视图中方法,函数参数、状态等则抽取为类视图属性,最终通过一个 as_view 方法将整个类视图转换为一个可调用对象...dates.py 主要存放用于按时间归档类视图,如 ArchiveIndexView,一些视图博客系统中非常有用,例如获取某个日期下全部文章列表。...list.py 主要包含了从数据库中获取多条记录类视图,例如从数据库中获取全部博客文章列表。 当然这仅仅是一个粗略概述,后续系列教程中将详细讲解各个模块中具体类作用。...如果遇到问题,请通过下面的方式寻求帮助。 在下方评论区留言。 更多 Django 相关教程,请访问我个人博客:追梦人物博客。

1.3K70

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

"/login/" TemplateView 显示Django HTML template 一般网站中使用模板显示ListView 显示对象列表 文章列表页 DetailView 显示对象详情 文章详细页...表示对象列表一个页面. 执行这个视图时候,self.object_list将包含视图正在操作对象列表(通常是一个查询集,但不是必须)....属性: model: 指定模型 tempalta_name:模板文件 queryset:指定一个经过过滤对象列表,将取代model提供值 context_object_name: 指定要在上下文中使用变量名称...,各种有用对象被存储self,同request(self.request)一样,其中包含了从URLconf中获取到位置参数(self.args)和关键字参数(self.kwargs)....也可指定不同模板。另外也可用template_name_suffix参数去指定模板

3.2K10

Django内置通用类视图及实例

1.ListView ? 表示对象列表一个页面. 执行这个视图时候,self.object_list将包含视图正在操作对象列表(通常是一个查询集,但不是必须)....属性: model: 指定模型 tempalta_name:模板文件 queryset:指定一个经过过滤对象列表,将取代model提供值 context_object_name: 指定要在上下文中使用变量名称...,各种有用对象被存储self,同request(self.request)一样,其中包含了从URLconf中获取到位置参数(self.args)和关键字参数(self.kwargs)....显示确认页面并删除现有对象视图.仅当请求方法为POST时,才会删除给定内容.如果此视图是通过GET提取,它将显示一个确认页面,其中包含POST到同一网址表单....也可指定不同模板。另外也可用template_name_suffix参数去指定模板

2.9K40

Django开发快速入门

命令行前括号中(library)表明我们虚拟环境处于活动状态。 传统Django网站由一个项目project和一个(或多个)代表不同功能应用apps组成。...image-20200916015409343 第一个app 典型下一步是开始添加代表功能不同区域应用程序。 一个Django项目可以支持多个应用程序。...让我们构建文件,以便我们图书馆项目列出首页所有书籍。 将您选择文本编辑器打开到settings.py文件。 第一步是将新应用添加到我们INSTALLED_APPS配置中。...然后,我们创建一个BookListView类,该类指定要使用模型和模板(尚未创建)。 拥有一个正常工作网页之前,需要执行两个步骤:制作模板并配置URL。 让我们从URL开始。...在此视图文件中,Book模型与ListView一起使用以列出所有书籍。 最后一步是创建我们模板文件,以控制实际网页布局。 我们已经视图中将其名称指定为book_list.html。

2.3K41

Django Pagination 简单分页

from django.core.paginator import Paginator 只需实例化一个 Paginator 对象,并在实例化时传入一个需要分页列表对象,就可以得到分页后对象数据。...image.png 这里,Django 官方文档中给出了一个视图函数中对列表进行分页示例,这个视图函数获取一个联系人列表并对其分页: from django.core.paginator import...这样首页文章列表就已经分好页了。 模板中设置分页导航 接下来便是模板中设置分页导航,比如上一页、下一页按钮,以及显示一些页面信息。...ListView 传递了以下和分页有关模板变量供我们模板中使用: paginator ,即 Paginator 实例。 page_obj ,当前请求页面分页对象。...object_list,请求页面的对象列表,和 post_list 等价。所以模板中循环文章列表时可以选 post_list ,也可以选 object_list。

2.1K50

通过 Django Pagination 实现简单分页

这里 Django 官方文档中给出了一个视图函数中对列表进行分页示例,这个视图函数获取一个联系人列表并对其分页: from django.core.paginator import Paginator...模板中设置分页导航 接下来便是模板中设置分页导航,比如上一页、下一页按钮,以及显示一些页面信息。我们这里设置和 Django 官方博客那样分页导航样式(具体样式见上图)。...ListView 传递了以下和分页有关模板变量供我们模板中使用: paginator ,即 Paginator 实例。 page_obj ,当前请求页面分页对象。...另外还要注意一点,请求哪一个页面通过 page 查询参数传递给 django 视图,django 会根据 page 值返回对应页面的文章列表,所以上一页和下一页超链接 href 属性指向 url...接下来我们将详细说明如何借助第三方库拓展 Pagination 以实现一个完善分页效果。

90420

马哥金牌分享 | 十分钟学会用Django快速搭建一个blog

本文是由马哥教育金牌讲师小智文字分享《如何快速搭建一个博客》整理而来。 ---- 1.django简介 Django一个开放源代码Web应用框架,由Python写成。...但是Django中,控制器接受用户输入部分由框架自行处理,所以Django 里更关注是模型(Model)、模板(Template)和视图(Views),称为MTV模式。...1.1 Django结构模型 层次 职责 模型(Model)数据存取层 处理与数据相关所有事务: 如何存取、如何验证有效性、包含哪些行为以及数据之间关系等。...视图(View)表现层 处理与表相关决定: 如何在页面或其他类型文档中进行显示。 模板(Template),业务逻辑层 存取模型及调取恰当模板相关逻辑。模型与模板桥梁。...install mysqlclient 5.安装mysql数据库 1.3 Django简单配置 新建一个项目: django-admin startproject blog 项目里面新建一个app

2.4K51

【16】进大厂必须掌握面试题-100个python面试

您将如何大写字符串一个字母? 回答:Python中,capitalize()方法将字符串首字母大写。如果字符串开头已经由大写字母组成,那么它将返回原始字符串。 Q30。...图: Python面试问题Django体系结构 开发人员提供模型,视图和模板,然后将其映射到URL,而Django发挥了神奇作用将其提供给用户。 Q77。说明如何Django中设置数据库。...提及Django模板组成。 回答: 模板一个简单文本文件。它可以创建任何基于文本格式,如XML,CSV,HTML等。...模板包含在评估模板时将变量替换为值变量,以及用于控制模板逻辑标签(%tag%)。 ? 图: Python面试问题Django模板 Q80。解释Django框架中会话使用?...Python中地图功能是什么? 回答: map函数作为第二参数给出iterable所有元素执行作为第一参数给出功能。如果给定函数接受多个参数,那么将给出许多可迭代变量。

16.2K30

Django来敲门~第一部分【9.使用Django内置视图处理对象简化开发】

为无为,则无不治 ——老子《道德经》 ---- 首先,要说这是Django基础部分最后一个章节了。...常规情况下,对应页面中要展示数据列表视图,通过继承Djangodjango.views.generic.ListView对象来实现,页面中要展示数据信息视图,通过继承Djangodjango.views.generic.DetailView...查看问题 ? 投票操作 3. 源码分析 此时,会有个问题困扰着我们,为什么要继承视图处理类,为什么要继承不同处理类ListView和DetailView?...这个问题就对了,我们看看Django源代码 首先查看ListView class ListView(MultipleObjectTemplateResponseMixin, BaseListView):...从基础文件view.py中,我们可以看到,各种视图模板基础处理操作和视图类型封装都有了简洁定义,我们需要做就是项目中,继承这些Django已经封装好对象,快捷完成项目的开发。

88530

拓展 Django Pagination 实现完善分页效果

使用 Django Pagination 实现简单分页功能 中,我们实现了一个简单分页导航效果。...始终显示第一页和最后一页 当前页码高亮显示 显示当前页码前后几个连续页码 如果两个页码号间还有其它页码,中间显示省略号以提示用户 类视图 ListView 由于开发网站过程中,有一些视图函数虽然处理对象不同...首先是从数据库取出文章或者帖子列表,然后将这些数据传递给模板并渲染模板。 于是 Django 把这些相同逻辑代码抽取了出来,写成了一系列通用视图函数,即基于类通用视图。...本文将使用到通用视图 ListViewListView 用来从数据库获取一个对象列表,而对列表进行分页过程也是比较通用ListView 已经实现了分页功能。...'), ... ] url 函数接收一个参数一个正则表达式,用于匹配用户请求 URL 模式。

1.9K60

标签云

我们 Demo 侧边栏可以看到一个标签云效果全部标签列表。...现在我们来给博客实现这个效果,让 Django 从数据库中获取全部标签数据列表,然后模板中显示它们,并且点击相应标签,就可以显示该标签下全部文章列表。...获取标签列表 很明显能够发现,标签和之前我们开发分类功能是十分类似的,唯一不同是一篇文章(Post)只能指定一个分类,但是却可以指定多个标签。回顾一下我们获取博客侧边栏分类列表时是怎么做呢?...{% endfor %} 事实,标签云实现方法和分类列表完全一样。我们定义一个 get_tags 模板标签,获取到文章数大于 0 标签列表,然后模板中渲染显示它。...总结 本章节代码位于:Step22: tag cloud。 如果遇到问题,请通过下面的方式寻求帮助。 简单问题在下方评论区留言。 Pythonzhcn 社区新手问答版块 发布帖子。

1.5K80
领券