【发布时间】:2014-10-02 11:12:57
【问题描述】:
我写了一个装饰器类,如下所示:
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__'
【问题讨论】:
-
什么是
method_decorator?如果它来自this module,那么非常简短的文档建议您应该继承它,而不是调用它(但我自己没有任何第一手经验)。 -
从 django.utils.decorators 导入 method_decorator .. 它从这里 .. @Blckknght
标签: python django python-2.7 python-decorators