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

Django源码学习-8-ListView&DetailView通用视图

Django网络应用开发5基础核心技术包括模型(Model)设计,URL 设计与配置,View(视图)编写,Template(模板设计Form(表单)使用。...Django通用视图可以减少开发单调性,它抽象出一些在视图开发中常用代码模式,这样就可以在无需编写大量代码情况下,快速编写出常用视图函数。 ?...): # 指明要操作Model(展示 Publisher 所有对象) model = Publisher # 在模板 context model 变量名,默认是 object_list...② DetailView:显示一个对象某个属性详细信息 用于显示某一 Model 一个 object 详细信息。...用属性 model 或 queryset 指定要操作 Model 或 queryset; DetailView 会根据 URLConf 或 筛选出一个

1.4K10

基于类通用视图:ListView DetailView

对处理首页视图函数来说,虽然其处理对象一个是文章,另一个是帖子,但是其处理过程是非常类似的。首先是从数据库取出文章或者帖子列表,然后这些数据传递给模板并渲染模板。... index 视图函数改写为类视图 针对这种从数据库获取某个模型列表数据(比如这里 Post 列表)视图,Django 专门提供了一个 ListView 类视图。...在 Django URL 模式配置方式就是通过 url 函数 URL 视图函数绑定。...对于这种类型需求,Django 提供了一个 DetailView 类视图。..., DetailView # 记得在顶部导入 DetailView class PostDetailView(DetailView): # 这些属性含义 ListView 是一样

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

概述

我们可以把这些操作逻辑写在一个直观 Python 函数里,但是 Django 开发者们意识到很多视图函数逻辑代码都是重复通用,因此在较早版本Django 便开始引入 Class-based...类视图比函数视图提供了更加高层抽象,它将上边提及数据库操作、表单处理、模板渲染等通用操作抽取为类视图中方法,函数参数、状态等则抽取为类视图属性,最终通过一个 as_view 方法整个类视图转换为一个可调用对象...类继承关系与命名规律 学习 Django 类视图一个最大障碍在于代码种类繁多,而且继承关系复杂,各种基类 Mixin,初看之下会让人眼花缭乱。...举一个例子,ListView 主要用于从数据库获取多条记录,它继承关系如下: ContextMixin --> MultipleObjectMixin + |...各个类组合在一起就构成了功能完整 ListView

1.3K70

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

为无为,则无不治 ——老子《道德经》 ---- 首先,要说这是Django基础部分最后一个章节了。...,不够~所以提供了常规一些页面视图对象对页面模板模板要展示数据进行了封装处理。...常规情况下,对应页面要展示数据列表视图,通过继承Djangodjango.views.generic.ListView对象来实现,页面要展示数据信息视图,通过继承Djangodjango.views.generic.DetailView...question_list,那么后面的DetailViewResultView数据是怎么来呢?...投票操作 3. 源码分析 此时,会有个问题困扰着我们,为什么要继承视图处理类,为什么要继承不同处理类ListViewDetailView

88530

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

此外,有问题模型可以作为一个额外参数传递到URLconfDjango通过通用视图来完成下面一些功能: 为单一对象展示列表一个详细页面。...一个单独讨论信息页面就是我们称 之为 “详细” 视图例子。 在年/月/日归档页面,以及详细页面“最后发表”页面,展示以数据库为基础对象。...(ListView): model = Publisher 最后视图解析到你url上: # urls.py from django.conf.urls import url from books.views...DetailView通用视图提供了一个publisher对象给context,但是我们如何在模板添加附加信息呢?...这里,我们拥有一个带有一供捕获参数URLconf: # urls.py from django.conf.urls import url from books.views import PublisherBookList

1.4K40

标签云

现在我们来给博客实现这个效果,让 Django 从数据库获取全部标签数据列表,然后在模板显示它们,并且点击相应标签,就可以显示该标签下全部文章列表。...{% endfor %} 事实上,标签云实现方法分类列表完全一样。我们定义一个 get_tags 模板标签,获取到文章数大于 0 标签列表,然后在模板渲染显示它。...首先是定义视图函数,然后编写模板文件,最后视图函数 URL 模式绑定。标签分类是完全一样步骤,因此稍微修改一下分类相关代码就可以用于标签了。...代码几乎 CategoryView 是一样,因此这里不再详细说明,具体请参考 CategoryView 部分代码说明 基于类通用视图:ListView DetailView。...由于 Post Categoty 是一对多关系(ForeignKey),所以 post.categoty 是唯一

1.5K80

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

但是在Django,控制器接受用户输入部分由框架自行处理,所以Django 里更关注是模型(Model)、模板(Template)视图(Views),称为MTV模式。...ORM,即Object-Relational Mapping(对象关系映射),它作用是在关系型数据库业务实体对象之间作一个映射,这样,我们在具体操作业务对象时候,就不需要再去复杂SQL语句打交道...表之间关系: 一个用户可以发表多篇文章 一个分类里面也多篇文章 分类用户没有直接关系 理清这些之后,现在开始编写对应model模型 2.3 编写models.py 2.4 创建和同步数据库 3...视图 Django有很多优秀视图: View DetailView ListView FormView CreateView DeleteView UpdateView 我们blog里面暂时只用到了...ListViewDetailView 4.2 使用dajngo自带ListView v 编写appviews.py 4.3 使用django自带DetailView 4.4 配置appurls.py

2.4K51

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

现在,创建一个Django视图来处理提交数据,在Part3已经创建了一个URLconf ,包含这一行: # polls/urls.py url(r'^(?...在本例,使用在Part3设定URLconf,reverse()调用返回一个这样字符串:'/polls/3/results/'。...这里使用两个通用视图:ListViewDetailView。这两个视图分别代表“显示对象列表”“显示特定类型对象详细信息页面”抽象概念。 每个通用视图需要知道它将作用于哪个模型。...快速通道 Django 1.10文文档-第一个应用Part1-请求与响应 Django 1.10文文档-第一个应用Part2-模型管理站点 Django 1.10文文档-第一个应用...Part3-视图模板 Django 1.10文文档-第一个应用Part4-表单通用视图

2.3K40

Django 官方推荐姿势:类视图

对处理首页视图函数来说,虽然其处理对象一个是文章,另一个是帖子,但是其处理过程是非常类似的:首先是从数据库取出文章或者帖子列表,然后这些数据传递给模板并渲染模板。... index 视图函数改写为类视图 针对这种从数据库获取某个模型列表数据(比如这里 Post 列表)视图,Django 专门提供了一个 ListView 类视图。...在 Django URL 模式配置方式就是通过 url 函数 URL 视图函数绑定。...对于这种类型需求,django 提供了一个 DetailView 类视图。..., DetailView # 记得在顶部导入 DetailView class PostDetailView(DetailView): # 这些属性含义 ListView 是一样

1.3K20

Django学习笔记 1.4 表单通用视图

1 编写一个简单表单 1.1 模版中新增表单 更新一下在上一个教程编写投票详细页面的模板 (“polls/detail.html”) ,增加一个 HTML 元素: {{ question.question_text... 2 通用视图 投票应用 detail results 视图操作都差不多,显得冗余。...这些视图反映基本 Web 开发一个常见情况:根据 URL 参数从数据库获取数据、载入模板文件然后返回渲染后模板。...由于这种情况特别常见,Django 提供一种快捷方式,叫做“通用视图”系统。 通用视图常见模式抽象化,可以使你在编写应用时甚至不需要编写Python代码。...让我们将我们投票应用转换成使用通用视图系统,仅仅需要做以下几步来完成转换: 1.转换 URLconf。 2.删除一些旧、不再需要视图。 3.基于 Django 通用视图引入新视图。

77710

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

"/login/" TemplateView 显示Django HTML template 一般网站中使用模板显示ListView 显示对象列表 文章列表页 DetailView 显示对象详情 文章详细页...表示对象列表一个页面. 执行这个视图时候,self.object_list包含视图正在操作对象列表(通常是一个查询集,但不是必须)....属性: model: 指定模型 tempalta_name:模板文件 queryset:指定一个经过过滤对象列表,取代model提供值 context_object_name: 指定要在上下文中使用变量名称...(self.object) context_object_name:self.object也存储在get_context_object_name()返回名称,该名称默认为模型小写名称. 3....form.fieldname:直接form作为一个dict,引用其每一个field,比如{{ form.title }} 引用formtitle这个field。

3.2K10

django2.0入门教程第四节

继上篇 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 优化urlview写法 另一种写法: 主键id代替question_id polls/urls.py #_*_coding:utf8_*_ from django.urls...入门教程不会对代码进入深入讲解,先大致了解其作用即可,后续再逐个模块进行解析 源码下载 相关源码包 如果对django2.0教程感兴趣,请关注我简书,持续更新...

75520

基于 Django 个人网站(2)

上回说到,因为文章内容数据类型是文本字段,文本字段只能输入字符,图片就不行了,当时我给出了两种方案——markdown 富文本编辑器,我决定选择富文本编辑器,因为 Django 富文本编辑器插件有很多...,在这很多个插件,我决定选择django-ckeditor。...django-ckeditor 使用 使用 django-ckeditor 非常简单,因为我这里安装django-ckeditor-5, django-ckeditor 差不多,但是也还是有一些区别的...下面直接回到正题,我们打开 PersonalWebsite\settings.py 里面找到 INSTALLED_APPS,在这个列表添加一名叫 django_ckeditor_5 app,如下所示...render from django.views.generic import DetailView, ListView from.models import Article # Create your

2.1K20

django 入门:通用视图类重构视图

:视图及模版》 《django入门:Admin管理系统及表单》 终于到最后一部分了,这部分我们通过 django 自带通用视图类替换之前写视图函数,对视图进行重构 2 利用 django 通用视图类创建类视图...,通过复写该方法,改变默认行为 def get_queryset(self): # 类视图中,从 url 捕获命名参数值保存在实例 kwargs ,是一个字典...# 非命名参数值保存在实例 args ,是一个列表 category = get_object_or_404(Category, pk=kwargs.get('pk'))...3 print(page2.previous_page_number()) # 获取上一页页码 1 print(page2.start_index()) # 当前页第一个 item 在列表位置...3 print(page2.end_index()) # 当前页最后一个 item 在列表位置 4 最后附上整个项目的地址:blog_project https://github.com

86920

Django内置通用类视图及实例

1.ListView ? 表示对象列表一个页面. 执行这个视图时候,self.object_list包含视图正在操作对象列表(通常是一个查询集,但不是必须)....属性: model: 指定模型 tempalta_name:模板文件 queryset:指定一个经过过滤对象列表,取代model提供值 context_object_name: 指定要在上下文中使用变量名称...(self.object) context_object_name:self.object也存储在get_context_object_name()返回名称,该名称默认为模型小写名称. 3....,ListView from django.utils import timezone from django.views.generic.detail import DetailView from...form.fieldname:直接form作为一个dict,引用其每一个field,比如{{ form.title }} 引用formtitle这个field。

2.9K40

基于 Django 个人网站(4)

分类页面的实现 考虑到分类页面是一个用来展示属于当前类别的所有文章,首页一样格式,就是显示列表项十有八九会比首页少,因此分类页面的视图直接继承首页视图,然后重写 get_queryset 方法就完事了...表单有了,视图有了,最后我们直接配置 URL,在 urlpatterns 列表添加一,代码如下: path('search/', SearchView.as_view()) 现在该实现也基本全都实现了...,接下来我就给出视图、模板 URL 完整代码,首先是视图 personal_website\views.py,代码如下: from django.db.models import Q from django.views.generic...这个时候虽然有点怪怪,但是导航栏搜索框都有了,我们虽点在导航栏中点击一个类别,我在这里点击类别5,如图所示。 ?...接下来我们就尝试搜索,在搜索框输入一个东西,看看是否可以被检索到,我在这里直接输入 2,然后点击搜索,最后搜索结果如图所示。 ?

1.1K20
领券