我写了一个装饰器类,如下所示:
import functools
class ViewCounter(object):
def __init__(self,user_slug=None):
self.user_slug = user_slug
def __call__(self, func):
@functools.wraps(func)
def wrapped_func(*args, **kwargs):
return func(*args,**kwargs)
return wrapped_func
我已将此应用于我的一个基于类的视图,使用Django' method_decorator
,如下所示:
class ProjectPage(DetailView):
template_name = 'account/profile-page-latest.html'
model = User
context_object_name = 'user_obj'
@method_decorator(ViewCounter)
def dispatch(self, *args, **kwargs):
return super(ProjectPage, self).dispatch(*args, **kwargs)
我在控制台中收到此错误:
AttributeError: 'ViewCounter' object has no attribute '__name__'
请帮我修复此错误。
答案 0 :(得分:0)
我相信使用@method_decorator(ViewCounter())
可以解决问题。 ViewCounter
不是函数装饰器,它是一个实例是函数装饰器的类。