django 中的view中进化史:

  1、在“天地初开”的时候django中的view是通过函数来定义的、函数接收一个request并以一个response作为返回;

  对于这个request是通过post、get、head还是别的什么方式来到服务器端的、要在函数中进行测试,然后就可以

  针对不同的请求进行不同的处理了; 一个典型的通过函数定义的View看起来像下面的样子

def MethodTest(request,*args,**kwargs):
if request.method=='GET':
return HttpResponse("这是一个get请求")
elif request.method=='POST':
return HttpResponse("这是一个post请求")
else:
return HttpResponse("others")

  这样写代码要面对的问题 1):如果view一多就会出现许多重复的代码、比如说上面函数中对请求类型的测试;2):不利于代码的重用;

  为了解决“重复”和“代码冗余”的问题,基于“class”的View就出现了。

  2、django把一些能用的代码“抽象”到了View这个类中、如果我们定义的view都继承自这个类、那么也就可以重用这部分代码了;

class MethodTest(View):
def get(self,request,*args,**kwargs):
return HttpResponse("这是一个get请求") def post(self,request,*args,**kwargs):
return HttpResponse("这是一个post请求")

  不同的请求走不同的方法进行处理、事实上View类上有一个dispatch方法在这个方法中对request.method进行测试、然后根据不同

  的请求方法调用不同的方法。

  3、class based view的进化并没有停止下来、原因是开发人员所编写的业务逻辑有非常大的一部份是重复的、比如说几乎每一个人都

  写过“表单处理”、“增、删了、改、查”这类的逻辑、django把这样的逻辑再次抽象并封装到了generic view 中去;通过generic view

  去开发业务逻辑、大大的加快了开发的速度。

  以下是我的个从网站(蒋乐哥哥的官方网站www.sqlpy.com)中一个完整的“增”功能对应的view

class TuningItemCreateView(CreateView):
"""
"""
form_class=TuningItemForm
template_name='sysbench/tuningitem-create.html'

  可以看到业务逻辑的处理已经全自动化了、简单到没有朋友呀!

  

------

我的个人网站:http://www.sqlpy.com

----

django class-based view 考古的更多相关文章

  1. Django Class Based View

    本节内容 一   Class Based View 基于类的视图 1.  类的视图 View 2.  类的视图 TemplateView 3.  类的视图 login_required解决方法 二   ...

  2. Django Function Based View(FBV)和Class Based View (CBV)对比

    一.FBV处理过程 首先来看一下FBV逻辑过程: 1.简单过程(借用官方示例): urls: from django.conf.urls import url from . import views ...

  3. Django 类方式view进行进行用户验证

    问题: Django中,view的书写方式有两种,一种是def函数方式,一种是class方式,函数方式通过@login_required装饰器标记函数,就必须通过用户验证,而类,则没办法通过此方法进行 ...

  4. Django 基础二(View和urls)

    上一篇博文已经成功安装了python环境和Django,并且新建了一个空的项目.接下来就可以正式开始进行Django下 的Web开发了.首先进入项目的主目录: cd ./DjangoLearn/hol ...

  5. Django中的View视图讲解

    Django中的View视图(view.py)是负责处理用户请求和返回响应的逻辑. 视图函数或视图简而言之就是一个python函数,它接受一个web请求并返回一个Web响应. 此响应可以是网页的HTM ...

  6. python3开发进阶-Django视图(View)的常见用法

    阅读目录 简述Django的View(视图) CBV和FBV Request对象和Response对象 Django组件(render,redirect)详解 一.简述Django的View(视图) ...

  7. Django框架 之 view视图

    Django框架 之 view视图 浏览目录 概述 简单的视图 HttpRequest对象 CBV和FBV 给视图加装饰器 Request对象 Response对象 JsonResponse对象 Dj ...

  8. Django Restful API Class Based View

    基于class定义view 前言: 我们首先通过以class的方式重写view,我们可以自己构造类也可以通过res_framework 提供的mixins和generics类库直接构造类 下面来看下自 ...

  9. Django views 中 View decorators

    decorators(装饰器) 1. require_http_methods 在django.views.decorators.http中,可以用来限制请求的权限. require_http_met ...

随机推荐

  1. kafka性能测试(转)KAFKA 0.8 PRODUCER PERFORMANCE

    来自:http://blog.liveramp.com/2013/04/08/kafka-0-8-producer-performance-2/ At LiveRamp, we constantly ...

  2. 算法笔记_201:第三届蓝桥杯软件类决赛真题(Java本科)

    目录 1 数量周期 2 提取子串 3 源码变换 4 古代赌局 5 火柴游戏   前言:以下代码仅供参考,若有错误欢迎指正哦~ 1 数量周期 [结果填空](满分9分) 复杂现象背后的推动力,可能是极其简 ...

  3. Data De-duplication

    偶尔看到data deduplication的博客,还挺有意思,记录之 http://blog.csdn.net/liuben/article/details/5829083?reload http: ...

  4. Markdown中实时显示数学公式的方法

    Markdown中实时显示数学公式的方法 Markdown非常好用,但是对于数学公式的实时显示有一些缺陷,如何解决这一问题呢? 一.在线LaTex编辑 点击在线LaTeX编辑方式 在对话框中输入数学公 ...

  5. Java基础知识三点

    1:对象的4种引用:强.软.弱.虚 强引用:如果一个对象具有强引用,那垃圾回收器绝不会回收它.当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回 ...

  6. 详解 KDTree

    https://blog.csdn.net/qing101hua/article/details/53228668

  7. java json与map互相转换(一)

      java json与map互相转换(一) CreationTime--2018年7月16日 Author:Marydon 1.准备工作 所需jar包:json-20180130.jar impor ...

  8. QTP Test ,VAPI-XP Test,LR Test 和ALM 集成远程分布式执行遇到的“access is denied ” “unspecified error”问题

    大家都知道QTP与ALM (QC的升级版)集成是最好的一个分布式执行的结合.因为毕竟QTP是一个商业软件,HP当然不会让你去跟其他的open source的工具去集成,要不他到哪里去挣钱. 有时候服务 ...

  9. python3 数据库查询

    #xiaodeng #python 3 #数据库查询 #第一种方法(fethall,返回所有行数据) import pymysql #connect链接服务器,注意和服务库编码一致 conn=pymy ...

  10. python之函数用法islower()

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #python之函数用法islower() #http://www.runoob.com/python/att ...