Django 什么';装饰基于类的视图的两种方法之间的区别是什么?
我正在编写一个从ListView继承的视图,并试图将该视图限制为登录用户 表示在URLconf中需要使用login_进行装饰“在每个实例的基础上应用装饰器。如果希望装饰视图的每个实例,则需要采用不同的方法”-这种方法是装饰视图代码中的分派方法 我以为我知道类和实例之间的区别,但是这个短语对我来说没有任何意义。有人能澄清一下吗?除了在URLconf中有一个装饰器而不是在类定义中,这两种方法之间有什么区别 上面的这段链接似乎回答了这个问题:“因为基于类的视图不是函数,所以根据您是使用as_视图还是创建子类,对它们进行修饰的方式会有所不同。”Django 什么';装饰基于类的视图的两种方法之间的区别是什么?,django,django-views,Django,Django Views,我正在编写一个从ListView继承的视图,并试图将该视图限制为登录用户 表示在URLconf中需要使用login_进行装饰“在每个实例的基础上应用装饰器。如果希望装饰视图的每个实例,则需要采用不同的方法”-这种方法是装饰视图代码中的分派方法 我以为我知道类和实例之间的区别,但是这个短语对我来说没有任何意义。有人能澄清一下吗?除了在URLconf中有一个装饰器而不是在类定义中,这两种方法之间有什么区别 上面的这段链接似乎回答了这个问题:“因为基于类的视图不是函数,所以根据您是使用as_视图还是创
真的吗??我似乎能够将URLconf方法用于我的ListView子类。假设您有以下基于类的视图:
class PostListView(ListView):
model = Post
ProtectedPostListView = login_required(PostListView.as_view())
和您的URL.py:
url(r'posts$', ProtectedPostListView)
如果您使用这种方法,那么您将失去对ProtectedPostListView
进行子类化的能力,例如
class MyNewView(ProtectedPostListView):
#IMPOSSIBLE
这是因为.as_view()
返回一个函数,在应用login\u required
decorator之后,您就剩下了一个函数,所以子类化是不可能的
另一方面,如果使用第二种方法,即使用方法decorator,子类化是可能的。
e、 g
class PostListView(ListView):
model = Post
@method_decorator(login_required)
def dispatch(self, *args, **kwargs):
return super(PostListView, self).dispatch(*args, **kwargs)
class MyNewView(PostListView):
#LEGAL