django class-based view 考古
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 考古的更多相关文章
- Django Class Based View
本节内容 一 Class Based View 基于类的视图 1. 类的视图 View 2. 类的视图 TemplateView 3. 类的视图 login_required解决方法 二 ...
- Django Function Based View(FBV)和Class Based View (CBV)对比
一.FBV处理过程 首先来看一下FBV逻辑过程: 1.简单过程(借用官方示例): urls: from django.conf.urls import url from . import views ...
- Django 类方式view进行进行用户验证
问题: Django中,view的书写方式有两种,一种是def函数方式,一种是class方式,函数方式通过@login_required装饰器标记函数,就必须通过用户验证,而类,则没办法通过此方法进行 ...
- Django 基础二(View和urls)
上一篇博文已经成功安装了python环境和Django,并且新建了一个空的项目.接下来就可以正式开始进行Django下 的Web开发了.首先进入项目的主目录: cd ./DjangoLearn/hol ...
- Django中的View视图讲解
Django中的View视图(view.py)是负责处理用户请求和返回响应的逻辑. 视图函数或视图简而言之就是一个python函数,它接受一个web请求并返回一个Web响应. 此响应可以是网页的HTM ...
- python3开发进阶-Django视图(View)的常见用法
阅读目录 简述Django的View(视图) CBV和FBV Request对象和Response对象 Django组件(render,redirect)详解 一.简述Django的View(视图) ...
- Django框架 之 view视图
Django框架 之 view视图 浏览目录 概述 简单的视图 HttpRequest对象 CBV和FBV 给视图加装饰器 Request对象 Response对象 JsonResponse对象 Dj ...
- Django Restful API Class Based View
基于class定义view 前言: 我们首先通过以class的方式重写view,我们可以自己构造类也可以通过res_framework 提供的mixins和generics类库直接构造类 下面来看下自 ...
- Django views 中 View decorators
decorators(装饰器) 1. require_http_methods 在django.views.decorators.http中,可以用来限制请求的权限. require_http_met ...
随机推荐
- JAVA设计模式——第 2 章 代理模式【Proxy Pattern】(转)
什么是代理模式呢?我很忙,忙的没空理你,那你要找我呢就先找我的代理人吧,那代理人总要知道被代理人能做哪些事情不能做哪些事情吧,那就是两个人具备同一个接口,代理人虽然不能干活,但是被代理的人能干活呀. ...
- ThreadLocal与Synchronized
package com.demo; import org.hibernate.HibernateException; import org.hibernate.classic.Session; imp ...
- vue 构建版本 选择
1.vue构建版本 vue构建版本分为:UMD.CommonJS和ES Module 三种. https://cn.vuejs.org/v2/guide/installation.html 区别: 所 ...
- Spring学习笔记二:注入方式
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6774608.html 我们说,IOC的实现方式是依赖注入,也就是把被依赖对象赋值到依赖对象的成员属性.怎么做 ...
- 【Thinking in Java】读书笔记
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6480258.html 第三章:操作符 1:基本数据类型的比较用 ==.!=,引用类型的==.!=是针对地址的比 ...
- ANTLR#1:描述一个简单计算器
https://blog.csdn.net/kisimple/article/details/44948603
- The minimum required Cuda capability is 3.7.
stackoverflow上早有讨论 https://stackoverflow.com/questions/33651810/the-minimum-required-cuda-capability ...
- kafaka可视化工具
许多中间件系统都提供了良好的可视化系统.MySQL有workbench,navcat,php版的mysqladmin等可视化程序.Redis.MongoDB也有开源的可视化程序.只要官方提供了探索数据 ...
- SQLDumpSplitter sql文件分割工具
数据库误操作,只好使用使用原来的备份数据去恢复数据,但是数据量太大,只好使用SQLDumpSplitter将大文件分割成小文件,然后恢复指定的表即可.
- ruby的sort方法的重新认识
ruby中的sort方法,这个方法可以加一个两个参数的block,这个block可以返回1 0 -1来表示这两个参数大于 等于 小于示例: str = ["192.160.175" ...