文档章节

Django基于类的视图

人间四月
 人间四月
发布于 2016/04/11 15:12
字数 578
阅读 80
收藏 0
点赞 1
评论 0
django 1.8 官方文档翻译: 3-4-1 基于类的视图
https://segmentfault.com/a/1190000003506222


基于类的视图

视图是一个可调用对象,它接受一个请求然后返回一个响应。

基于类的视图优点

  1. HTTP方法(GET、POST等)可有有个字的方法,而不是通过条件分支来解决。
  2. 面向对象的技术,例如Mixin(多继承)可以将代码分解成可重用的组件。

使用基于类的视图

使用基于类的视图的核心是允许你使用不同实例方法来形影不同的HTTP请求方法,而不是在一个视图函数中使用条件分支代码来实现。

因为Django的URL解析器将请求和关联的参数发送给一个可刁颖的函数儿不是一个雷,所以基于类的视图有一个as_view()类方法类作为类的可调用入口。改as_view()入口点创建类的一个实例并调用dispatch()方法。diapatch查看请求是GET还是POST等等,并将请求转发给相应的方法,如果发方法没有定义则引发HttpResponseNotAllowed。

设置了类的属性:

  1. Python标准的方式,子类化并在子类中覆盖属性和方法。
  2. 在URLconf中用as_view()调用的关键字参数配置类的属性。
    urlpatterns = [
        url(r'^about/', GreetingView.as_view(greeting="G'day")),
    ]



       对于每个请求都会实例化类的一个实例,但是as_view()入口点设置的类属性值在URl第一次导入时配置。

使用Mixin

  1. Mixin 是重用多个类的代码的一种极好的方法,但是它们需要一些代价。代码在Mixin 中越分散,子类将越难阅读并知道它的行为;如果你的继承很深,将难以知道应该覆盖哪一个Mixin 的方法。
  2. 只能继承一个通用视图——也就是说,只能有一个弗雷继承View,其他的弗雷必须是Mixin。继承多个继承自View类将不能像预期的那样动作。

封装as_view()的Mixin

将共同的行为运用于多个类的一种方法是编写一个封装as_view()的方法Mixin。



© 著作权归作者所有

共有 人打赏支持
人间四月
粉丝 2
博文 74
码字总数 30455
作品 0
朝阳
程序员
Django 基于类的视图源码分析 一

基于类的视图(Class-based view)是Django 1.3引入的新的视图编写方式,用于取代以前基于函数(Function-based)方式。借助于OO和Python中方便的多重继承特性,基于类的视图可以提供更好的抽象与...

XuYuan
2013/02/05
0
0
django类视图浅析

在Django1.3之前,通用视图是以函数的方式来实现的。基于函数的实现已经不 建议使用,建议使用这里介绍的基于类的实现方式。 基于类的通用视图(以及任何继承了Django提供的基础类的基于类的...

人间四月
2016/04/19
14
0
django 1.8 官方文档翻译: 3-4-5 内建基于类的视图的API

内建基于类的视图的API 基于类的视图的API 参考。另请参见基于类的视图 的简介。 基础视图 通用的显示视图 通用的编辑视图 通用的日期视图 基于类的视图的Mixins 基于类的通用视图 —— 索引...

apachecn_飞龙
2015/08/30
0
0
Django 之 基于类的视图源码分析

基于类的视图(Class-based view)是Django 1.3引入的新的视图编写方式,用于取代以前基于函数(Function-based)方式。 借助于OO和Python中方便的多重继承特性,基于类的视图可以提供更好的抽象...

首席安全砖家
2013/06/11
0
0
LET'S DJ:web.py无缝迁移到django

DO: 前提是必须要配置好django使用jinja2模版,保持与老项目模版引擎一致。 Django通用视图最基础的类是View,其他如TemplateView、RedirectView等都继承自它,具体用法参见:Django 通用视...

cwalet
2016/04/29
241
0
Django 1.3 首个Alpha版发布

Django 1.3首个Alpha版发布!Django 是一个开放源代码的Web应用框架,由Python写成。 1.3新改进: 基于Class的视图:新增了一个框架,可以使用一个类作为视图; 日志:支持Python的 logging模...

小编辑
2010/11/14
614
1
Django 中针对基于类的视图添加 csrf_exempt

在Django中对于基于函数的视图我们可以 @csrf_exempt 注解来标识一个视图可以被跨域访问。那么对于基于类的视图,我们应该怎么办呢? 简单来说可以有两种访问来解决 方法一:在类的 dispatch...

楠木楠
04/17
0
0
Django 2.1 RC1 发布,Python web 框架

Django 2.1 候选版本于7月18日发布,预计正式版将于8月1日左右发布。 Django 2.1 特性 Python版本支持 Python 版本要求 3.5+ ,不再支持 3.4 。 模型权限:新增查看(view)权限 一直以来,Dja...

Kinegratii
前天
0
0
Django REST Framework 3.0 发布

Django REST Framework 3.0 发布,此版本经历了大约 4 年的迭代和细化,解决了之前序列化程序,字段和通用视图的问题。 此版本是增量版本,包括一些重大的 API 改进,升级需要你仔细阅读发行...

oschina
2014/12/02
4.5K
3
Django: 路由与视图

简介 Django框架是美国World Company(世界公司?NB)的工程师Adrian Holovaty和Simon Willison在开发其公司运行的新闻网站(LJWorld.com、Lawrence.com、KUsports.com ) 过程中,逐渐完善丰...

笔阁
2015/11/10
1K
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

JAVA 三种WebService 规范

JAVA 中共有三种WebService 规范,分别是JAX-WS(JAX-RPC)、JAXM&SAAJ、JAX-RS。 1. Jaxws(掌握) JAX-WS 的全称为 Java API for XML-Based Webservices ,早期的基于SOAP 的JAVA 的Web 服务...

onedotdot
17分钟前
0
0
将博客搬至CSDN

将博客搬至CSDN

xpbob
18分钟前
0
0
TensorFlow 拟合异或 one-hot方式

增加隐含层数目 之前是按照计算出的数值按照0.5分为0和1,现在是算出向量,用维度较大的作为结果 import tensorflow as tfimport numpy as np# 网络结构:2维输入 --> 2维隐藏层 --> ...

阿豪boy
20分钟前
0
0
Aidl进程间通信详细介绍

目录介绍 1.问题答疑 2.Aidl相关属性介绍 2.1 AIDL所支持的数据类型 2.2 服务端和客户端 2.3 AIDL的基本概念 3.实际开发中案例操作 3.1 aidl通信业务需求 3.2 操作步骤伪代码 3.3 服务端操作...

潇湘剑雨
35分钟前
0
0
python爬虫日志(3)下载图片

import urlliburl='https://xxx.jpg'#图片地址res=urllib.request.urlopen(url)#此函数用于对url的访问data=res.read() #字节流with open(r'D:\1.jpg',"wb") as code: c...

茫羽行
52分钟前
0
0
vue中$emit的用法

1、父组件可以使用 props 把数据传给子组件。 2、子组件可以使用 $emit 触发父组件的自定义事件。 vm.$emit( event, arg ) //触发当前实例上的事件 vm.$on( event, fn );//监听event事件后运...

JamesView
今天
0
0
bash审计系统搭建

step1:使用saltstack工具bash部署>>>>>> # salt -N clienta state.sls audit step2:安装elasticsearch>>>>>> 注意: 1.不能以root用户进行启动,需要创建用户,并对解压的elasticsearch目录赋......

硅谷课堂
今天
0
0
Linux sar性能分析

Linux使用sar进行性能分析 sar简介 sar命令常用格式 sar常用性能数据分析 整体CPU使用统计-u 各个CPU使用统计-P 内存使用情况统计-r 整体IO情况-b 各个IO设备情况-d 网络统计-n sar日志保存-...

易野
今天
0
0
用 Python 实现打飞机,让子弹飞吧!

所用技术和软件 python 2.7 pygame 1.9.3 pyCharm 准备工作 安装好 pygame 在第一次使用 pygame 的时候,pyCharm 会自动 install pygame。 下载好使用的素材。 技术实现 初始化 pygame 首先要...

猫咪编程
今天
0
0
MySQL的行锁和表锁

简单总结一下行锁和表锁。 行锁 每次操作锁住一行数据。开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。 表锁 每次操作锁住整张表。开销小,加锁快;不会出...

to_ln
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部