我和装修师有点问题。我正试图用可选参数编写自己的decorator。在
现在是这样做的:
def CheckPremissions(manager=1):
def wrap(func):
def wrapper(request, *args, **kwargs):
if request.user.is_anonymous():
return HttpResponseRedirect(reverse('login'))
logged_user = getRelatedWorker(request.user)
if (logged_user == None):
return HttpResponseRedirect('accounts/no_worker_error.html')
if self.manager != 0:
try:
dzial = Dzial.objects.get(kierownik=logged_user)
except Dzial.DoesNotExist:
isManager = False
else:
isManager = True
if not isManager:
return HttpResponseRedirect('accounts/denied_logged.html')
return func(request, *args, **kwargs)
return wrapper
return wrap
代码看起来不错(对我来说),但是当我使用修饰符时,我遇到了以下错误:
^{pr2}$我做错什么了?在
我怀疑你用错了装饰工。您需要调用它来指定
manager
参数:或者明确指定:
^{pr2}$您的decorator也有一个不同的问题;您在代码中引用
self.manager
:但这不是实例,也没有
self
参数。我想你是说:(可以通过将变量视为布尔值来测试变量是否为非零)。哦,而且您可能希望修复装饰器的拼写;您可能是指
CheckPermissions
。:-)相关问题 更多 >
编程相关推荐