一、为什么引入类视图?
以函数的方式定义的视图称为函数视图,函数视图便于理解。但是遇到一个视图对应的路径提供了多种不同HTTP请求方式的支持时,便需要在一个函数中编写不同的业务逻辑,代码可读性与复用性都不佳。
# 函数视图,处理注册 def login(request): # 判断请求方法是POST还是GET if request.method == 'POST': return HttpResponse(request.method) elif request.method == 'GET': return HttpResponse(request.method)
在Django中也可以使用类来定义一个视图,称为类视图。
使用类视图可以将视图对应的不同请求方式以类中的不同方法来区别定义。如下所示:
from django.views import View
# 类视图,处理注册 class SomeView(View): # 每个请求方法用一个函数,可重复调用,可继承 def get(self,request): return HttpResponse(request.method) def post(self,request): return HttpResponse(request.method)
类视图的好处:
- 代码可读性好
- 类视图相对于函数视图有更高的复用性, 如果其他地方需要用到某个类视图的某个特定逻辑,直接继承该类视图即可
注意:配置路由时,使用类视图的as_view()
方法来添加。