我通常在装有python 2.6的Ubuntu 10.04机器上工作。我有以下装饰器:Django:在特定设置下在装饰器中获取参数错误
def owner_required(view_func, Model):
'''
checks if the object is being accessed but its owner
'''
def decorator(view_func):
@wraps(view_func, assigned=available_attrs(view_func))
def _wrapped_view(request, *args, **kwargs):
obj = Model.objects.get(pk=int(kwargs['pk']))
if obj.user == request.user:
return view_func(request, *args, **kwargs)
return HttpResponse('Forbidden')
return _wrapped_view
return decorator(view_func)
一切工作正常,在同一台机器。
当我尝试在我的笔记本电脑上安装Ubuntu 11.10和Python 2.7.2时,出现此问题。
任何网页,我尝试访问,我得到以下错误:
TypeError: owner_required() takes exactly 1 argument (2 given)
在我的myapp/urls.py,我有以下行,这是造成错误:
url(r'^(?P<pk>\d+)/$', name = 'my_view', \
view = owner_required(login_required(\
DetailView.as_view(model=MyModel,\
template_name='myapp/view.html')),MyModel))
所以,owner_required
正在接受2个参数:的login_required
和MyModel
什么能引起问题的结果呢?我只给我的Ubuntu和Python版本,因为我不知道还有什么可能导致这种情况。我应该考虑哪些其他“变量”来解决这个问题?两者都运行在virtualenv和相同的django版本1.3.1