一 . 什么是FBV&CBV
FBV -Function Base VIew
CBV-Class Base Viev
-
FBV实现方法:
def user(request): if request.method == 'GET': return HttpResponse('FBV GET') if request.method == 'POST': return HttpResponse('FBV POST') if request.method == 'DELETE': return HttpResponse('FBV DELETE') if request.method == 'PUT': return HttpResponse('FBV PUT') 路由:url(r'^fuser/',views.user),
-
CBV实现方法:
class User(View): def get(self, request, *args, **kwargs): return HttpResponse('FBV GET') def post(self, request, *args, **kwargs): return HttpResponse('FBV POST') def put(self, request, *args, **kwargs): return HttpResponse('FBV PUT') def delete(self, request, *args, **kwargs): return HttpResponse('FBV DELETE') 路由:url(r'^cuser/',views.User.as_view())
-
注意 继承自view ,view主要功能是以 类反射实现的: url路由->as_view->view函数->dispatch()函数.
查找View内部实现调用的步骤
反射查找1.png反射查找2.png
反射查找3.png
CBV的映射方法常用四种
-
1. hasattr(obj,name_str): 判断objec是否有name_str这个方法或者属性 ---> 通过hasattr 判断属性/方法是否存在。
-
2. getattr(obj,name_str): 获取object对象中与name_str同名的方法或者函数 --->获取对象中的方法或函数 。
-
3. setattr(obj,name_str,value): 为object对象设置一个以name_str为名的value方法或者属性 --> 更改,或添加一个新的属性或方法。
-
4. delattr(obj,name_str): 删除object对象中的name_str方法或者属性 --- > 删除对象中的方法或属性。
网友评论