前言
系列文章目录
视频及资料和课件
链接:https://pan.baidu.com/s/1LCv_qyWslwB-MYw56fjbDg?pwd=1234
提取码:1234
1. 类视图简介
以函数的方式定义的视图称为函数视图。
但是遇到一个视图对应的路径提供了多种不同HTTP请求方式的支持时,便需要在一个函数中编写不同的业务逻辑,代码可读性与复用性都不佳。
def register(request): """处理注册""" # 获取请求方法,判断是GET/POST请求 if request.method == 'GET': # 处理GET请求,返回注册页面 return render(request, 'register.html') else: # 处理POST请求,实现注册逻辑 return HttpResponse('这里实现注册逻辑')
在Django中可以使用类来定义一个视图,称为类视图。
使用类视图可以将视图对应的不同请求方式的响应处理以类中的不同方法来区别定义。
类视图的好处:
1.代码可读性好
2.类视图相对于函数视图有更高的复用性 , 如果其他地方需要用到某个类视图的某个特定逻辑,直接继承该类视图即可
2. 类视图的定义
2.1 继承父类的导入
定义类视图需要继承自Django提供的父类View
.
View的导入:
from django.views import View
2.2 定义类视图
在类视图中,对于不同的请求方式,定义不同的方法进行处理,类视图的方法直接采用http的请求方法名字作为函数名,如:get、post、delete…
类视图的方法的第一个参数为self,第二个参数必须为请求实例对象request,同时类视图的方法必须有返回值,返回值为HttpResponse对象及其子类对象。
from django.views import View # Create your views here. class LoginView(View): def get(self, request): return HttpResponse('get') def post(self, request): return HttpResponse('post')
2.3 类视图的路由配置
配置路由时,使用类视图的as_view()
方法来添加。其实类视图.as_view()
就是一个视图函数名。
类视图.as_view()
会返回请求方法对应的处理函数。
as_view()
执行流程:
path('class_login/', views.LoginView.as_view())