django学习过程中遇到的事
django-question01
简单阐述一下CBV模式
回答:CBV本质就是FBV,CBV内as_view()返回的就是 return view,我们在理解代码的时候,一定要注意这个self和cls指代的是谁!!!方法是谁调用的!!
局部代码
.
// An highlighted block
def as_view(cls, **initkwargs): # cls指代的是XXX.as_view()中的XXX
def view(request, *args, **kwargs):
self = cls(**initkwargs) # self 指代的也是XXX.as_view()中的XXX
self.setup(request, *args, **kwargs)
return self.dispatch(request, *args, **kwargs)
def dispatch(self, request, *args, **kwargs):
handler = getattr( # 通过反射来获取属性request.method.lower()==》'get'
self, request.method.lower(), self.http_method_not_allowed
return handler(request, *args, **kwargs) # 最后返回这个get()方法
以上就是对源码的了解