码迷,mamicode.com
首页 > 其他好文 > 详细

django class-based view 考古

时间:2018-05-12 15:14:27      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:sel   一个   接收   抽象   bsp   根据   类型   冗余   请求   

 

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进行测试、然后根据不同

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

 

 

 

 

 

 

 

 

 

-----

django class-based view 考古

标签:sel   一个   接收   抽象   bsp   根据   类型   冗余   请求   

原文地址:https://www.cnblogs.com/JiangLe/p/9028618.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!