以函数的方式定义的视图称为函数视图,函数视图便于理解。但是遇到一个视图对应的路径提供了多种不同HTTP请求方式的支持时,便需要在一个函数中编写不同的业务逻辑,代码可读性与复用性都不佳。
代码如下:
def register(request):
"""视图函数:处理注册"""
#获取请求方法,判断是GET/POST请求
if request method == 'GET':
#处理GET请求,返回注册页面
return render(request, 'register.html')
else:
#处理POST请求,实现注册逻辑
return HttpResponse('这里是实现注册逻辑')
使用类视图可以将视图对应的不同请求方式以类中的不同方法来区别定义。
代码如下:
from django.views.generic import View
class RegisterView(View):
"""类视图:处理注册"""
def get(self, request):
#处理GET请求,返回注册页面
return render(request, 'register.html')
def post(self, request):
#处理POST请求,实现注册逻辑
return HttpResponse('这里实现注册逻辑')
类视图的好处:
- 代码可读性好
- 类视图相对于函数视图有更高的复用性, 如果其他地方需要用到某个类视图的某个特定逻辑,直接继承该类视图即可