专栏首页数据云团Django源码学习-9-TemplateView 通用视图

Django源码学习-9-TemplateView 通用视图

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

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

django基于类的通用视图就是将一些mixin合成为有用的通用视图。基于类的通用视图(以及任何继承了Django提供的基础类的基于类的视图)都能够以下面两种方式被配置:子类化,或者直接通过URLconf来传递参数。

from django.views.generic import TemplateView

当子类化一个类视图时,可以重写一些属性(比如template_name)或者 一些方法(比如 get_context_data)在子类中来提供一些新的值或者方 法。考虑一下,比如,一个仅仅需要展示一个模板的视图,index.html。Django有一个通用视图来完成这个功能 - TemplateView - 因此可以子类化它,然后重写模板的名称:

from django.views.generic import TemplateView

class IndexView(TemplateView):
    template_name = "index.html"

需要添加这个新的视图到URLconf配置中。因为类视图本身是一个类,把URL指向 as_view 这个类方法来替代类本身,这是类视图的入口点:

from django.urls import path
from some_app.views import IndexView

urlpatterns = [
    path('index/', IndexView.as_view()),
]

作为一个选择,如果仅仅修改类视图中少量简单的属性,可以直接传递新的属性到类本身调用 as_view 方法中:

from django.urls import path
from django.views.generic import TemplateView

urlpatterns = [
    path('index/', TemplateView.as_view(template_name="index.html")),
]

本文分享自微信公众号 - 数据云团(SmartData),作者:云团小楠

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-08-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Django源码学习-11-base.py

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

    小团子
  • Django实战-csrf_token 跨站请求

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

    小团子
  • Django进阶篇 Rest framework (一)

    在 django 中,路由匹配之后,会进行路由分发,这个时候会有两种选择模式,分别是 FBV 与 CBV。

    小团子
  • 类视图 vs. 函数视图

    基于类的视图(CBV)和基于函数的视图(FBV)到底有什么区别? 有什么优缺点? 本篇将会去探讨。 在阅读本篇之前,请记住一点「基于类的视图不会替代基于函数的视...

    用户1416054
  • SQL操作六

    爱撒谎的男孩
  • SwiftUI:使用 @EnvironmentObject 从环境中读取自定义值

    SwiftUI的环境使我们可以使用来自外部的值,这对于读取Core Data上下文或视图的展示模式等很有用。但是我们也可以将自定义对象发送到环境中,并在以后将它...

    韦弦zhy
  • MySQL引擎和视图的点

    存储引擎Storage Engine:MySQL中的数据、索引以及其他对象是如何存储的,是一套文件系统的实现。

    孙玄@奈学教育
  • 不看后悔 —— 视图详细介绍

    在MySQL中,视图可能是我们最常用的数据库对象之一了。那么你知道视图和表的区别吗?你知道创建及使用视图要注意哪些点吗?可能很多人对视图只是一知半解,想详细了解...

    MySQL技术
  • 快速学习Oracle-视图

    我们尝试着修改视图但是发现是视图所查询的表的字段值被修改了。所以我们一般不会去修改视图。

    cwl_java
  • 【DB笔试面试431】在视图上不能完成的操作是()

    视图是由从数据库的基本表中选取出来的数据组成的逻辑窗口,它不同于基本表,它是一个虚拟表,其内容由查询定义。在数据库中,存放的只是视图的定义而已,而不存放数据,这...

    小麦苗DBA宝典

扫码关注云+社区

领取腾讯云代金券