Django-视图CBV执行流程详解

2019-01-08  本文已影响47人  f050d162bcc1

FBV写法

def func_view(request):
    "Function views"
    if request.method == "GET":
        return HttpResponse("GET-请求")
    elif request.method == "POST":
        return HttpResponse('POST-请求')
    elif request.method == "PUT":
        return HttpResponse('PUT-请求')
    elif request.method == "DELETE":
        return HttpResponse('DELETE-请求')
    else:
        return HttpResponse("不支持的请求类型")

CBV写法

class MyClassView(View):
    def get(self, request, *args, **kwargs):
        return HttpResponse("GET-请求")

    def post(self, request, *args, **kwargs):
        return HttpResponse("POST-请求")

    def put(self, request, *args, **kwargs):
        return HttpResponse("PUT-请求")

    def delete(self, request, *args, **kwargs):
        return HttpResponse("DELETE-请求")

原理

微信截图_20190107211036 微信截图_20190107211509 微信截图_20190107211710 微信截图_20190107212833 微信截图_20190107213123 微信截图_20190107213809 微信截图_20190107213912 微信截图_20190107214135 微信截图_20190107214459 微信截图_20190107214847 微信截图_20190107215246 微信截图_20190107215130 微信截图_20190107215339 微信截图_20190107215905

结论: CBV基于反射实现根据请求方式不同,执行不同方法

原理总结:
路由url -- > view函数 --> dispatch方法(根据反射来执行:GET/POST/PUT/DELETE等等....)

上一篇 下一篇

猜你喜欢

热点阅读