Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Django源码学习-8-ListView&DetailView通用视图

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

作者头像
小团子
发布于 2019-08-06 09:12:08
发布于 2019-08-06 09:12:08
1.5K00
代码可运行
举报
文章被收录于专栏:数据云团数据云团
运行总次数:0
代码可运行

Django源码学习-7-View 视图函数

Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。

Django的通用视图可以减少开发的单调性,它抽象出一些在视图开发中常用的代码和模式,这样就可以在无需编写大量代码的情况下,快速编写出常用的视图函数。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from django.views.generic import View
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from django.views.generic.base import RedirectView, TemplateView, View
from django.views.generic.dates import (
    ArchiveIndexView, DateDetailView, DayArchiveView, MonthArchiveView,
    TodayArchiveView, WeekArchiveView, YearArchiveView,
)
from django.views.generic.detail import DetailView
from django.views.generic.edit import (
    CreateView, DeleteView, FormView, UpdateView,
)
from django.views.generic.list import ListView

__all__ = [
    'View', 'TemplateView', 'RedirectView', 'ArchiveIndexView',
    'YearArchiveView', 'MonthArchiveView', 'WeekArchiveView', 'DayArchiveView',
    'TodayArchiveView', 'DateDetailView', 'DetailView', 'FormView',
    'CreateView', 'UpdateView', 'DeleteView', 'ListView', 'GenericViewError',
]


class GenericViewError(Exception):
    """A problem in a generic view."""
    pass

① ListView:显示对象列表

用于展示一个 Model 里面的所有对象,也可以是其子集 (queryset) ,支持分页。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from django.views.generic import ListView
from books.models import Publisher

class PublisherList(ListView):
     # 指明要操作的Model(展示 Publisher 的所有对象)
    model = Publisher
    # 在模板 context 中 model 的变量名,默认是 object_list
    context_object_name = 'publisher_list'
     # 要渲染的模板,默认是 '<app_name>/<model_name>_list.html'
    template_name = 'app/publisher_list.html'

② DetailView:显示一个对象的某个属性详细信息

用于显示某一 Model 中的一个 object 的详细信息。

  • 用属性 model 或 queryset 指定要操作的 Model 或 queryset;
  • DetailView 会根据 URLConf 中的 <int:pk> 或 <slug:slug> 筛选出一个 object;
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from django.views.generic import DetailView
from books.models import Author

# 当该页面被访问时,对 Model 做出额外的工作
class AuthorDetailView(DetailView):

    queryset = Author.objects.all()

    def get_object(self):
        # get_object() 默认时返回通过 pk 或 slug 筛选出的对象(该视图需要操作的对象)
        # Call the superclass
        object = super().get_object()
        # Record the last accessed date
         # 当有人访问该页面时,更新最后访问时间
        object.last_accessed = timezone.now()
        object.save()
        # Return the object
        return object
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-08-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据云团 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Django2.0中文(通用视图)
1、通用视图 urls.py: from django.views.generic import TemplateView path(r'about/',TemplateView.as_view(template_name="about.html")), 2、通用视图 about.html xx/templates/about.html
用户5760343
2022/05/14
8190
Django内置的通用类视图CBV及示例
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
菲宇
2019/10/22
3.5K0
Django内置的通用类视图CBV及示例
Django内置的通用类视图及实例
表示对象列表的一个页面. 执行这个视图的时候,self.object_list将包含视图正在操作的对象列表(通常是一个查询集,但不是必须). 属性:
菲宇
2019/06/13
3.3K0
Django内置的通用类视图及实例
django 1.8 官方文档翻译: 3-4-2 内建显示视图
编写Web应用可能是单调的,因为你需要不断的重复某一种模式。 Django尝试从model和 template层移除一些单调的情况,但是Web开发者依然会在view(视图)层经历这种厌烦。
ApacheCN_飞龙
2022/11/27
1.6K0
Django源码学习-8-ListView 通用视图-续
Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。
小团子
2019/08/06
9010
django 1.8 官方文档翻译: 3-4-3 使用基于类的视图处理表单
你自己实现这些功能经常导致许多重复的样本代码(参见在视图中使用表单)。为了避免这点,Django 提供一系列的通用的基于类的视图用于表单的处理。
ApacheCN_飞龙
2022/11/27
2.1K0
Django来敲门~第一部分【9.使用Django内置视图处理对象简化开发】
首先,要说这是Django基础部分的最后一个章节了。后面会详细讲解Django每一部分的使用方式和API了
大牧莫邪
2018/08/27
9930
基于类的通用视图:ListView 和 DetailView
在开发网站的过程中,有一些视图函数虽然处理的对象不同,但是其大致的代码逻辑是一样的。比如一个博客和一个论坛,通常其首页都是展示一系列的文章列表或者帖子列表。对处理首页的视图函数来说,虽然其处理的对象一个是文章,另一个是帖子,但是其处理的过程是非常类似的。首先是从数据库取出文章或者帖子列表,然后将这些数据传递给模板并渲染模板。于是,Django 把这些相同的逻辑代码抽取了出来,写成了一系列的通用视图函数,即基于类的通用视图(Class Based View)。 使用类视图是 Django 推荐的做法,而且熟悉
追梦人物
2018/04/17
2.8K0
类视图 vs. 函数视图
基于类的视图(CBV)和基于函数的视图(FBV)到底有什么区别? 有什么优缺点? 本篇将会去探讨。 在阅读本篇之前,请记住一点「基于类的视图不会替代基于函数的视图」.
用户1416054
2018/12/26
2.6K0
diango之基于内置视图CBS编程
Class-based views是Django为解决建站过程中的常见的呈现模式而建立的。具有如下几个原则:
菲宇
2019/06/13
7710
django 入门:通用视图类重构视图
博客:https://www.jianshu.com/p/8cdf099e974f
陈宇明
2020/12/15
9770
django 入门:通用视图类重构视图
Python-Django
一般在urls.py中配置url,在models.py中配置model,在views.py中配置View。
py3study
2020/01/03
7920
在 django generic.DetailView 里设置缓存(重写 get_object )
# ..\Lib\site-packages\django\views\generic\dates.py
卓越笔记
2023/02/18
3360
Django源码学习-11-base.py
Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。
小团子
2019/08/09
1.3K0
Django源码学习-11-base.py
Django开发网页计数器统计页面浏览次数
实际Web开发过程中,我们经常要统计并显示一个页面的浏览次数。今天我们会以博客的例子,教你如何利用Django开发网页计数器,统计并显示一篇文章的浏览次数。本文的原理可以适用于很多场景,比如统计某一文件的下载次数,统计某一用户在单位时间内的登录次数。本文使用Django 2.0 + Python 3.X实现。
菲宇
2019/06/13
2.3K0
Django开发网页计数器统计页面浏览次数
Django源码学习-9-TemplateView 通用视图
Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。
小团子
2019/08/06
1.6K0
Django学习-第十二讲:视图高级(二)类视图、模板视图、列表视图、和分页
在写视图的时候,Django除了使用函数作为视图,也可以使用类作为视图。使用类视图可以使用类的一些特性,比如继承等。
小海怪的互联网
2019/10/08
1.2K0
Django学习笔记 1.4 表单和通用视图
更新一下在上一个教程中编写的投票详细页面的模板 (“polls/detail.html”) ,增加一个 HTML 元素:
twowinter
2020/04/17
8670
马哥金牌分享 | 十分钟学会用Django快速搭建一个blog
本文是由马哥教育金牌讲师小智的文字分享《如何快速搭建一个博客》整理而来。 ---- 1.django简介 Django是一个开放源代码的Web应用框架,由Python写成。采用了MVC的框架模式,即模型M,视图V和控制器C。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。并于2005年7月在BSD许可证下发布。这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的。 Django是一个基于MVC构造的框架。但是在Django
小小科
2018/05/02
2.6K0
马哥金牌分享 | 十分钟学会用Django快速搭建一个blog
Django实战篇-论坛话题视图
上一节的注册中,使用了 form 表单,在 <form> 标签中,定义了 method 属性告诉浏览器想如何与服务器通信。HTTP 规范定义了几种 request methods 请求方法,需要使用 GET 和 POST。
小团子
2019/07/18
7280
Django实战篇-论坛话题视图
相关推荐
Django2.0中文(通用视图)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验